跳出嵌套循环
本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 2 课,共 68 课。
处理嵌套循环时,普通的 break 语句只会退出最内层的循环。不过,Go 提供了标签,让你可以直接跳出外层循环,从而精确控制复杂的循环结构。
标签是一个后跟冒号的标识符,放在循环前面。然后,你可以使用 break 后跟标签名来退出指定的循环,即使是在嵌套循环中也可以。
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 1 {
break outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
}在这个示例中,当满足条件 i == 1 && j == 1 时,break outer 会立即退出内层和外层循环。在搜索二维数据结构时,这尤其有用,因为一旦找到要找的内容,你就可以立即停止搜索。
挑战
简单在这个挑战中,你将练习使用带标签的 break 语句,在搜索二维网格时退出嵌套循环。你需要在网格中找到指定的目标数字,并在找到后立即停止搜索。
你会收到两个输入:
- 一个表示网格尺寸的字符串,格式为
"rows,cols"(例如:"3,4") - 一个表示要搜索的目标数字的字符串(例如:
"7")
下面是提供给你的二维数字网格:
grid := [][]int{
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
}你的任务是:
- 解析第一个输入中的尺寸,确定要搜索的行数和列数
- 解析第二个输入中的目标数字
- 使用带标签的
break和嵌套循环搜索网格 - 找到目标数字时,打印
"Found [target] at position ([row], [col])",并立即使用带标签的 break 退出两个循环 - 如果搜索结束后仍未找到目标数字,则打印
"Target [target] not found"
位置应使用从 0 开始的索引表示(第一行为 0,第一列为 0)。
亲手试试
// TODO: 在下方编写你的代码
// 使用嵌套循环和带标签的 break 查找目标
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Go 在线编译器