Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Golang break、Continue跳出循环

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
			}
		}
	}
}

注意点

例如 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跳出循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文