目录
1. 分支控制
1.1 if 语句
if 条件 {
// 条件成立时执行
} else if 其他条件 {
// 另一个条件成立时执行
} else {
// 都不成立时执行
}
// 支持变量初始化:
if score := 80; score >= 60 {
fmt.Println("及格")
}
1.2 switch 语句
switch 表达式 {
case 值1:
// ...
case 值2, 值3: // 多个匹配值
// ...
default:
// 都不匹配时执行
}
特点:
Go 的 switch 不需要写 break,匹配成功会自动跳出。
想继续执行下一个 case,可以用
fallthrough
:
// 一
// 二
switch num := 1; num {
case 1:
fmt.Println("一")
fallthrough
case 2:
fmt.Println("二")
}
2. 循环控制
Go 只有 for
一种循环语句。
// 1. 标准 for 循环
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// 2. while 风格
i := 0
for i < 5 {
fmt.Println(i)
i++
}
// 3. 无限循环
for {
fmt.Println("一直执行")
}
for range
用于遍历数组、切片、map、字符串:
// 在for range循环中遍历字符串时,每次迭代会返回两个值
// 第一个是字符的索引
// 第二个是字符的值,当遍历结束后会自动退出for循环。
nums := []int{1, 2, 3}
for i, v := range nums {
fmt.Println(i, v)
}
3. 跳转控制
3.1 break 语句
退出当前循环或 switch
。
for i := 0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
3.2 continue 语句
跳过本次循环,进入下一次循环。
for i := 0; i < 5; i++ {
if i%2 == 0 {
continue
}
fmt.Println(i)
}
3.3 goto
直接跳到某个标签执行(不建议频繁使用)。
fmt.Println("开始")
goto End
fmt.Println("这里不会执行")
End:
fmt.Println("结束")
3.4 return语句
Go中的return语句在方法或函数中使用,表示跳出所在的方法或函数。如下:
// 在普通函数中使用return语句,表示跳出当前函数,可以理解成终止函数。
// 在main函数中使用return语句,表示终止main函数,即终止整个程序。
func main() {
// return语句
for i := 0; i < 10; i++ {
if i == 6 {
return
}
fmt.Printf("%d ", i)
}
}
3.5 带标签的 break / continue
当有多层循环时,可以退出到指定标签。
// 0 0
Outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
break Outer // 直接跳出 Outer 循环
}
fmt.Println(i, j)
}
}
/*
0 0
1 0
2 0
*/
Outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if j == 1 {
continue Outer // 直接跳出 Outer 循环
}
fmt.Println(i, j)
}
}