• Go语言学习(四)-- 流程控制


    1. 选择结构语句

    1.1 if语句

    go语言中if的结构语法如下:

    if 条件判断 {
        // 代码语句
    }
    条件判断如果为真( true ),那么就执行大括号中的语句;如果为假( false ),就不执行大括号
    中的语句。
    if else 结构语法:
    if 条件判断 {
            //代码语句 1
    } else {
            //代码语句2
    }
    条件判断如果为真( true ),那么就执行 if 大括号中的语句。
    条件判断如果为假( false ),那么就执行 else 大括号中的语句。
    if 代码块或 else 代码块,必须有一块被执行。
    if else if 结构语法
    if 条件判断 1 {
            //代码语句 1
    } else if 条件判断 2 {
            //代码语句 2
    } else if 条件判断 3 {
            //代码语句 3
    } else {
            //代码语句 4
    }
    从上到下依次判断条件,如果结果为真,就执行 { } 内的代码 。

     go语言中的if语句和我们熟悉的java语句当中的使用方式基本一致,简单的介绍之后就能够操作起来。

    1.2 switch语句

    switch 变量或者表达式的值 {
            case 1 :
                    //代码语句1
            case 2 :
                    //代码语句2
            case 3 :
                    //代码语句3
            default :
                    //代码语句4
    }
    执行流程:
    程序执行到 switch 处,首先将变量或者表达式的值计算出来,然后拿着这个值依次跟每个 case 面所带的值进行匹配,一旦匹配成功,则执行该 case 所带的代码, 执行完成后,跳出switch-case结构
    如果,跟每个 case 所带的值都不匹配。就看当前这个 switch-case 结构中是否存在 default ,如果有 default ,则执行 default 中的语句,如果没有 default ,则该 switch-case 结构什么都不做。
    注意:
    • 某个case 后面跟着的代码执行完毕后,不会再执行后面的case(相当于我们熟悉的java中break go语言中switch语句中执行完一个case是不用break的 每次匹配成功执行完代码后就会默认跳出switch),而是跳出整个switch结构, 相当于每个case后面都跟着break(终止)
    • 但是如果想执行完成某个case后,强制执行后面的case,可以使用fallthrough。
    • case后面可以允许有多个值,这些值在逻辑上具有相同的处理,值之间用,隔开
    1. func main() {
    2. //switc 表达式{case 值1:代码1 case 值2:代码2} 那个分支满足条件执行那一个
    3. //输入月份 计算天数
    4. day := 0
    5. m := 0
    6. fmt.Scan(&m)
    7. switch m {
    8. //如果有多个值 执行相同代码 可以使用逗号分隔
    9. case 1, 3, 5, 7, 8, 10, 12:
    10. day = 31
    11. //fallthrough //执行完当前分支 继续向下执行
    12. case 2:
    13. day = 29
    14. case 4, 6, 9, 11:
    15. day = 30
    16. default:
    17. //默认选择
    18. day = -1
    19. }
    20. fmt.Println(day)
    21. }

    2 循环结构语句

    for 语句
    • 语法结构如下:
    for 表达式 1 ; 表达式 2 ; 表达式 3 {
            //循环体
    }
    表达式 1 :定义一个循环的变量,记录循环的次数。
    表达式 2 :一般为循环条件,循环多少次。
    表达式 3 :一般为改变循环条件的代码,使循环条件终有不再成立。
     
    • 示例1
    1. for i := 1; i <= 100; i++ {
    2. sum += i
    3. }
    4. fmt.Println(sum)
    • 循环语句之间可以相互嵌套:
    for 循环条件 {
            for 循环条件 {
                    //执行代码
            }
    }
    1. func main() {
    2. //冒泡排序
    3. //比较两个相邻数据元素 满足条件 交换数据位置
    4. slice := []int{9, 1, 5, 6, 10, 8, 3, 7, 2, 4}
    5. //外层控制行 表示执行次数
    6. for i := 0; i < len(slice)-1; i++ {
    7. //内层控制列 表示比较次数
    8. for j := 0; j < len(slice)-1-i; j++ {
    9. //比较两个相邻元素 大于号 升序排序 小于号 降序排序
    10. if slice[j] < slice[j+1] {
    11. //交换数据的值 = 多重赋值
    12. slice[j], slice[j+1] = slice[j+1], slice[j]
    13. }
    14. }
    15. }
    16. fmt.Println(slice)
    17. }
    break 语句
    • 在循环语句中可以使用break跳出语句:
    • 当它出现在循环语句中,作用是跳出当前内循环语句,执行后面的代码。
    • 当它出现在嵌套循环语句中,跳出最近的内循环语句,执行后面的代码。
    continue 语句
    在循环语句中,如果希望立即终止本次循环,并执行下一次循环,此时就需要使用 continue 句。
    goto语句
    goto语句可以直接跳转到我们指定的flag之后的语句。但是注意goto语句跳转不可以破坏代码的逻辑结构( 不可以跳入循环内部,也不可以跳出函数 )。goto语句的跳转强度是比较大的,当我们想要跳出好几层嵌套的循环的时候我们可以使用goto语句。
    1. func main0103() {
    2. //goto 无条件跳转语句
    3. fmt.Println("1")
    4. FLAG:
    5. fmt.Println("2")
    6. fmt.Println("3")
    7. goto FLAG
    8. fmt.Println("4")
    9. }
    10. func main() {
    11. //goto 可不以跳入循环内部 不可以跳出函数
    12. HERE:
    13. for i := 0; i <= 10; i++ {
    14. if i == 5 {
    15. //break
    16. goto HERE
    17. }
    18. fmt.Println(i)
    19. }
    20. fmt.Println("程序执行结束...")
    21. }

  • 相关阅读:
    杀死Node.js!全新JS运行时“快到飞起”!
    工业高频读写器和超高频读写器怎么选?
    【MATLAB高级编程】入门篇 | 向量化编程
    Typora~阿里云OSS+Typora+PicGo解决方案
    C语言青蛙爬井(ZZULIOJ1072:青蛙爬井)
    GCP/临床试验基础知识集锦
    【常用的 SVN 命令及简要示例】
    遗传算法GA求解TSP问题
    v-on的修饰符
    大数据清洗、转换工具——ETL工具概述
  • 原文地址:https://blog.csdn.net/qq_45875349/article/details/127688272