Golang支持如下4种流程控制语句:
- 条件语句:if,else和else if
- 选择语句:switch,case和select
- 循环语句:for,range
- 跳转语句:goto
条件语句
示例代码:
代码语言:javascript复制a := 3
if a < 5 {
fmt.Println(a, "litter than 5")
} else {
fmt.Println(a, "not litter than 5")
}
关于条件语句,要注意以下几点:
- 条件语句不要使用小括号
()
将条件包含起来 - 不论语句体内有几条语句,花括号
{}
都是必须存在 - 左花括号
{
必须与if
或else
在同一行 - 在
if
之后,条件语句之前,可以添加变量初始化语句,使用分号;
分隔
选择语句
根据传入条件的不同,选择语句会执行不同的分支。 示例代码:
代码语言:javascript复制switch i {
case 0:
fmt.Println("0")
case 1:
fmt.Println("1")
case 2:
fallthrough
case 3:
fmt.Println("3")
case 4,5,6:
fmt.Println("4, 5, 6")
default:
fmt.Println("default")
}
i = 0,输出:0 i = 1,输出:1 i = 2,输出:3 i = 3,输出:3 i = 4,输出:4, 5, 6 i = 5,输出:4, 5, 6 i = 6,输出:4, 5, 6 i = 其他值,输出:default
有意思的是,switch后面的表达式都不是必须的,如下示例:
代码语言:javascript复制switch { // switch关键字之后没有表达式
case i >= 0 && i <= 3:
fmt.Println("0-3")
case i >= 4 && i <= 6:
fmt.Println("4-6")
}
关于选择语句,注意一下几点:
- 左花括号
{
必须与switch处于同一行 - 条件表达式不限制为常量或整数
- 单个case中,可以出现多个结果选项
- 不需要使用break语句退出case
- 只有在case中出现了关键字
fallthrough
,才会继续执行紧跟的下一个case - 可以不设置switch之后的条件表达式
循环语句
Golang中的循环语句只支持for
关键字。
示例代码:
sum := 0
for i = 0; i < 10; i {
sum = 1
}
无限循环:
代码语言:javascript复制sum := 0
for {
sum
if sum > 10 {
break
}
}
在循环语句的条件表达式中支持多重赋值:
代码语言:javascript复制a := []int{1, 2, 3, 4, 5, 6}
for i, j := 0, len(a) - 1; i < j; i, j = i 1, j - 1 {
a[i], a[j] = a[j], a[i]
}
关于循环语句,注意以下几点:
- 左花括号
{
必须与for在同一行 - 支持使用
continue
和break
来控制循环
跳转语句
goto语句的语义非常简单,就是跳转到本函数内的某个标签。 示例语句:
代码语言:javascript复制// 如下使用goto语句实现了类似循环的效果
func gotoSample() {
i := 0
HERE:
fmt.Println(i)
i
if i < 5 {
goto HERE
}
}
输出:
代码语言:javascript复制0
1
2
3
4