继续指定的循环
本课属于 Coddy GO 学习旅程的“逻辑与流程”单元。第 3 课,共 68 课。
正如你可以将标签与 break 一起使用来退出指定的循环一样,Go 也允许你将标签与 continue 语句一起使用。带标签的 continue 会跳过指定循环当前的迭代,并跳转到下一次迭代。
当你想在内层循环中跳过外层循环当前迭代的剩余部分,而不只是继续执行内层循环时,这一点尤其有用。
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}在这个示例中,当 i == 1 && j == 0 时,continue outer 语句会跳过外层循环当前迭代的剩余部分,包括内层循环和“外层循环迭代结束”这条消息。然后,程序会直接进入外层循环的下一次迭代,此时 i 变为 2。
挑战
简单在这个挑战中,你将练习使用带标签的 continue 语句来控制嵌套循环的执行。你正在构建一个数据处理系统,需要根据内层循环中找到的条件,跳过某些外层循环迭代。
你将收到两个输入:
- 一个表示要处理的行数的字符串(例如,
"4") - 一个表示跳过条件数字的字符串(例如,
"3")
系统会提供以下二维数据数组:
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}你的任务是:
- 从第一个输入中解析行数,以确定要处理多少行
- 从第二个输入中解析跳过条件数字
- 使用带标签的
continue和嵌套循环处理数据 - 检查每一行中的每一列的值
- 如果在某一行的任意一列中找到跳过条件数字,就使用带标签的
continue跳过该行剩余的处理,并转到下一行 - 对于不包含跳过条件数字的行,输出
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - 对于包含跳过条件数字的行,输出
"Skipping row [row_number] due to condition"
行号应使用从 0 开始的索引(第一行为 0)。只处理第一个输入指定的行数,并且每行只检查前 5 列。
亲手试试
package main
import (
"fmt"
"strconv"
)
func main() {
// 读取输入
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// 解析输入
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// 已提供的二维数据数组
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: 在下方编写你的代码
// 使用嵌套循环和带标签的 continue 处理数据
// 检查每一行是否包含用于跳过的条件数字
// 根据是否找到该数字,输出相应的消息
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: Go 在线编译器