循环控制语句用于在循环执行过程中改变流程: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









暂无评论内容