【go语言】循环控制语句 break、continue、goto

循环控制语句用于在循环执行过程中改变流程:break 终止循环,continue 跳过本次循环,goto 直接跳转到指定标签。本章基于 for 循环讲解它们的使用。

1. break

break 用于终止整个循环体。当 break 语句执行后,循环直接结束,程序跳到循环后面的语句继续执行。

for i := 1; i <= 10; i++ {
    if i == 5 {
        break
    }
    fmt.Println(i)
}
// 输出:1 2 3 4,到 5 时循环终止

在嵌套循环中,break 只能跳出它所在的那一层循环。Go 语言可以通过在循环前定义标签,让 break 跳出指定的外层循环:

outer:
    for i := 1; i <= 3; i++ {
        for j := 1; j <= 3; j++ {
            if i == 2 && j == 2 {
                break outer
            }
            fmt.Printf("i=%d j=%d\n", i, j)
        }
    }
// 输出:i=1 j=1 / i=1 j=2 / i=1 j=3 / i=2 j=1,到 i=2 j=2 时整体跳出

2. continue

continue 用于跳过本次循环中剩余的语句,直接进入下一轮循环。它不会终止整个循环。

for i := 1; i <= 10; i++ {
    if i%2 == 0 {
        continue
    }
    fmt.Println(i)
}
// 输出:1 3 5 7 9,偶数被跳过

continue 同样支持标签,带上标签时会跳到指定标签所在的外层循环的下一轮:

outer:
    for i := 1; i <= 3; i++ {
        for j := 1; j <= 3; j++ {
            if j == 2 {
                continue outer
            }
            fmt.Printf("i=%d j=%d\n", i, j)
        }
    }
// 输出:i=1 j=1 / i=2 j=1 / i=3 j=1

3. goto

goto 通过标签将控制流无条件转移到程序中的另一行。虽然 break 和 continue 可以满足大多数场景,goto 在集中处理错误时偶尔有用:

for i := 0; i < 10; i++ {
    for j := 0; j < 10; j++ {
        if j == 2 {
            goto exit
        }
    }
}
exit:
    fmt.Println("直接跳到这里")

注意:goto 不能跨过变量的声明,也不能跳出函数。日常开发中建议优先使用 break、continue 和 return,避免滥用 goto 造成流程混乱。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容