可以使用标签将外部循环从内部for
循环中中断。让我们通过一个简单的例子来说明。
package main
import (
"fmt"
)
func main() {
for i := 0; i < 3; i++ {
for j := 1; j < 4; j++ {
fmt.Printf("i = %d , j = %d\n", i, j)
}
}
}
上面的程序将打印
i = 0 , j = 1
i = 0 , j = 2
i = 0 , j = 3
i = 1 , j = 1
i = 1 , j = 2
i = 1 , j = 3
i = 2 , j = 1
i = 2 , j = 2
i = 2 , j = 3
如果我们想在i
和j
相等时停止打印,需要中断外部for
循环。当i
和j
相等时,在内部for
循环中添加一个break
只会中断内部for循环。
package main
import (
"fmt"
)
func main() {
for i := 0; i < 3; i++ {
for j := 1; j < 4; j++ {
fmt.Printf("i = %d , j = %d\n", i, j)
if i == j {
break
}
}
}
}
在上面的程序中,当第i
行和第j
行相等时,我在内部的for
循环中添加了一个break
,但这只会中断内部for循环,外部循环将继续。这个程序将打印:
i = 0 , j = 1
i = 0 , j = 2
i = 0 , j = 3
i = 1 , j = 1
i = 2 , j = 1
i = 2 , j = 2
这不是预期的输出。当i
和j
相等时,需要停止打印。
这种情况下,可以使用标签。标签可以用来中断外部循环。让我们使用标签重写上面的程序。
package main
import (
"fmt"
)
func main() {
outer:
for i := 0; i < 3; i++ {
for j := 1; j < 4; j++ {
fmt.Printf("i = %d , j = %d\n", i, j)
if i == j {
break outer
}
}
}
}
在上面的程序中,我们在第一行增加了一个标签outer
。通过指定标签来中断外部的for循环。当i
和j
相等时,程序将停止打印。这个程序将输出
i = 0 , j = 1
i = 0 , j = 2
i = 0 , j = 3
i = 1 , j = 1