-
带标签的 continue:
直接跳到标签所标记的最外层循环的下一个迭代,忽略当前迭代剩余的代码。
-
带标签的 break:
直接跳出标签所标记的最外层循环,继续执行该循环之后的代码。
-
goto 关键字
goto 可以无条件地跳转到程序中指定的标签处。在这种情况下,可以使用任意标签,不仅限于循环。
代码范例:
continue
rowLoop: // 这是外层循环的标签 for i, row := range array { // 外层循环 for j, value := range row { // 内层循环 if value <= threshold { continue rowLoop } fmt.Printf("Found: row %d, col %d\n", i, j) return } } // 输出: // Row 0 start // Row 0, Col 0 // Row 1 start // Row 1, Col 0 // Row 2 start // Row 2, Col 0
break
rowLoop: // 这是外层循环的标签 for i := 0; i < 3; i++ { // 外层循环 fmt.Printf("Row %d start\n", i) for j := 0; j < 3; j++ { // 内层循环 if j == 1 { break rowLoop } fmt.Printf("Row %d, Col %d\n", i, j) } fmt.Printf("Row %d end\n", i) } // 输出: // Row 0 start // Row 0, Col 0
goto
for i := 0; i < 3; i++ { // 外层循环 fmt.Printf("Row %d start\n", i) for j := 0; j < 3; j++ { // 内层循环 if j == 1 { goto end } fmt.Printf("Row %d, Col %d\n", i, j) } fmt.Printf("Row %d end\n", i) } end: // 这是goto标签 fmt.Println("Reached end label") // 输出: // Row 0 start // Row 0, Col 0 // Reached end label
到此这篇关于Go中带标签的break/continue以及goto的差别的文章就介绍到这了,更多相关内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文地址:https://blog.csdn.net/qq_35760825/article/details/132350243