Golang中break、Continue跳出多层循环的实现
作者:@航空母舰
本文主要介绍了Golang中break、Continue跳出多层循环的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Break
break 语句可以结束 for、switch 和 select 的代码块。Break在没有使用标签的时候break只是跳出了一层for循环。break 语句还可以在语句后面添加标签,表示退出某个标签对应的代码块,标签要求必须定义在对应的 for、switch 和 select 的代码块上。
func main() {
OuterLoop:
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
switch j {
case 2:
fmt.Println(i, j)
break OuterLoop
case 3:
fmt.Println(i, j)
break OuterLoop
}
}
}
}continue
continue 语句可以结束当前循环,开始下一次的循环迭代过程,仅限在 for 循环内使用。在 continue 语句后添加标签时,表示开始标签对应的循环。例如:
func main() {
OuterLoop:
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
switch j {
case 2:
fmt.Println(i, j)
continue OuterLoop
}
}
}
}注意点
break Label可以跳出标签指定的for、switch、select。continue Label只能作用于标签指定的外层for,不能作用于switch或select。- 标签必须定义在循环或
switch/select前面。 - 标签定义后如果未使用,会编译错误。
- 标签只在当前函数内有效,不能跨函数跳转。
例如 switch 中的普通 break 只跳出 switch,不会跳出外层 for:
for i := 0; i < 3; i++ {
switch i {
case 1:
break // 只跳出 switch,for 继续
}
}如果想跳出外层 for,需要给 for 加标签:
Loop:
for i := 0; i < 3; i++ {
switch i {
case 1:
break Loop
}
}替代方案:封装成函数
多层循环中查找、匹配时,更推荐封装成函数,用 return 直接结束:
func find(matrix [][]int, target int) (int, int, bool) {
for i, row := range matrix {
for j, v := range row {
if v == target {
return i, j, true
}
}
}
return -1, -1, false
}这种方式通常比标签更清晰,可读性更好。
到此这篇关于Golang中break、Continue跳出多层循环的实现的文章就介绍到这了,更多相关Golang break、Continue跳出循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
