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,循环就全部学完。

笔记加载中…