Go 循环语句
Go 没有 while、do-while,所有循环都由 for 完成,常见三种写法。片段省略外壳,可放入 main 函数运行。
1. 三段式 for
初始化、条件、步进三部分用分号分隔,先判断条件再执行:
sum := 0
for i := 1; i <= 100; i++ {
sum += i
}
fmt.Println("1+...+100 =", sum) // 输出: 1+...+100 = 5050
2. while 形式与无限循环
只写条件就等价于 while;条件都不写就是死循环,常配 break 退出:
n := 5
for n > 0 { // while 形式
fmt.Println(n) // 输出: 5 4 3 2 1,每行一个
n--
}
for { // 无限循环
fmt.Println("停不下来")
break // 立即跳出
}
3. break 与 continue
break 结束整个循环,continue 跳过本次迭代继续下一次:
for i := 1; i <= 10; i++ {
if i > 5 {
break // 大于 5 立即停止
}
if i%2 == 0 {
continue // 偶数不打印
}
fmt.Println(i) // 输出: 1 3 5
}
4. goto 标签跳转
goto 可无条件跳到代码中的标签处,配合 if 也能形成循环:
i := 0
LOOP:
i++
if i <= 3 {
fmt.Println("第", i, "次") // 输出: 第 1 次 第 2 次 第 3 次
goto LOOP // 跳回 LOOP 标签
}
goto 易使逻辑难读,能用 break/continue 解决时尽量不用。
5. 嵌套循环与 range
外层每循环一次、内层完整走一遍;range 用于遍历切片等集合:
for i := 1; i <= 3; i++ {
for j := 1; j <= i; j++ { // 内层循环
fmt.Printf("%d*%d=%d ", j, i, i*j)
}
fmt.Println()
}
for i, name := range []string{"张三", "李四"} {
fmt.Println(i, name)
}
输出:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
0 张三
1 李四
小结
掌握 for 三种写法,配合 break/continue/goto 与 range,循环就全部学完。