Menu
CoddyTech

跳出嵌套循环

本课属于 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 会立即退出内层和外层循环。在搜索二维数据结构时,这尤其有用,因为一旦找到要找的内容,你就可以立即停止搜索。

challenge icon

挑战

简单

在这个挑战中,你将练习使用带标签的 break 语句,在搜索二维网格时退出嵌套循环。你需要在网格中找到指定的目标数字,并在找到后立即停止搜索。

你会收到两个输入:

  • 一个表示网格尺寸的字符串,格式为 "rows,cols"(例如:"3,4")
  • 一个表示要搜索的目标数字的字符串(例如:"7")

下面是提供给你的二维数字网格:

grid := [][]int{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12}
}

你的任务是:

  1. 解析第一个输入中的尺寸,确定要搜索的行数和列数
  2. 解析第二个输入中的目标数字
  3. 使用带标签的 break 和嵌套循环搜索网格
  4. 找到目标数字时,打印 "Found [target] at position ([row], [col])",并立即使用带标签的 break 退出两个循环
  5. 如果搜索结束后仍未找到目标数字,则打印 "Target [target] not found"

位置应使用从 0 开始的索引表示(第一行为 0,第一列为 0)。

亲手试试

    // TODO: 在下方编写你的代码
    // 使用嵌套循环和带标签的 break 查找目标
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Go 在线编译器