流程控制主要用于设定计算执行的次序,建立程序的逻辑结构。Go 语言的流程控制和其他编程语言类似,支持如下几种流程控制语句:
- 条件语句:用于条件判断,对应的关键字有 if、else 和 else if
- 分支语句:用于分支选择,对应的关键字有switch、case、select(用于通道)
- 循环语句:用于循环迭代,对应的关键字有for、range
- 跳转语句:用于代码跳转,对应的关键字有goto
根据具体的业务逻辑,灵活组合上述控制语言来实现相应的功能。
条件语句
条件语句的示例模板如下:
条件语句使用示例如下:
1、中断式
2、嵌套式
3、多段式
Go 语言的条件语句,需要注意以下几点:
- 条件语句不需要使用圆括号将条件包含起来 ();
- 无论语句体内有几条语句,花括号 {} 都是必须存在的;
- 左花括号 { 必须与 if 或者 else 处于同一行;
- 在 if 之后,条件语句之前,可以添加变量初始化语句,使用 ; 间隔,比如上述代码可以这么写 if score := 100; score > 90 {}
分支语句
分支语句会根据传入条件的不同,选择不同的分支代码执行。
表达式使用示例
明确等值判断使用示例
分支合并
在 Go 语言中,我们可以用逗号分隔不同的分支条件来达到合并分支语句的目的,如 case 1,2。
如果你想要跨分支执行,可以通过一个 fallthrough 语句来声明
switch 总结
- 单个 case 中,可以出现多个结果选项(通过逗号分隔)
- 通过fallthrough 关键字,可以跨分支执行
- 表达式和明确定定植判断有区别(switch 之后的条件表达式)
循环语句
1、for循环
Go 语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构。
2、无限循环
对于无限循环场景,可以通过不带循环条件的 for 语句实现。
通过 break 语句可以中断无限循环。
3、嵌套循环
实现乘法表
4、for-range 结构
Go 语言还支持通过 for-range 结构对(数组、切片、map)进行循环遍历。
循环总结:
- 不支持 whie 和 do-while 结构的循环语句
- 可以通过 for-range 结构对可迭代集合进行遍历
跳转语句
- break 与 continue 语句
Go 语言支持在循环语句中通过 break 语句跳出循环,通过 continue 语句进入下一个循环。
- 标签
Go 语言的 break 和 contine 与其他语言的不同之处在于支持与标签结合跳转到指定的标签语句,从而改变这两个语句的默认跳转逻辑,标签语句通过标签 + :进行声明:
Label在最外层for循环,此时break Label会直接跳出外层for循环,返回end
- goto 语句
Go 语言支持 goto 关键字,goto 语句的语义非常简单,就是跳转到本函数内的某个标签,如:
当第一次满足 j > 1 的条件时,代码就会跳转到 EXIT 标签指定的位置,继续后续代码执行。