📅  最后修改于: 2023-12-03 15:15:21.459000             🧑  作者: Mango
在 Go 编程语言中,我们可以使用 continue
关键字跳过当前循环内的语句,进入循环下一轮,但有时我们需要跳出多重循环,或者是跳回外层的循环,此时可以使用 label
标签以及 goto
关键字来实现。
标签可以理解为一个标记点,可以被我们在程序中的某个语句处引用,从而实现跳转的功能。格式为:
labelName:
其中 labelName
为标签的名称,需要符合 Go 语言的标识符规范。
下面我们以一个示例来实现一个表格的输出功能,其中表格行列数在循环体外预先设定。我们需要在多重循环中输出每个单元格的行列值:
rows := 5
cols := 10
for r := 0; r < rows; r++ {
for c := 0; c < cols; c++ {
cellValue := fmt.Sprintf("%d-%d", r, c)
fmt.Printf("%s\t", cellValue)
if c == 7 {
goto breakAll // 如果当前列数为 7,跳回外层循环
}
}
fmt.Println() // 换行
}
breakAll: // 标签,用于跳回外层循环
fmt.Println("跳出了所有循环")
以上代码中,我们使用了 goto
关键字以及 breakAll
标签来实现在当前列数为 7 时跳出两重循环并输出一段文本。
虽然使用 goto
关键字是一个可行的解决方案,但是过多地使用该关键字会使代码难以理解和维护。我们应该尽量避免在程序中使用 goto
,尽可能采用其他结构化方式来编写代码,使代码更加清晰易读。