一般的 break 语句只能跳出当前循环,没办法控制跳出到上级循环,但是 golang 中提供了类似 goto 的方式 label breaks
。
package main
import "fmt"
func t1() {
for i := 0; i < 2; i++ {
breaki := false
for j := 0; j < 5; j++ {
if j == 2 {
breaki = true
break
}
fmt.Println("hello")
}
if breaki {
break
}
fmt.Println("hi")
}
}
func t2() {
I:
for i := 0; i < 2; i++ {
for j := 0; j < 5; j++ {
if j == 2 {
break I
}
fmt.Println("hello")
}
fmt.Println("hi")
}
}
func main() {
t1()
fmt.Println("---")
t2()
}
t1 为传统写法,t2 为label breaks
高级写法,在循环起始的地方定义一个 label,在 break 的时候可以接上 label,到达跳出那一层循环。
有疑问加站长微信联系(非本文作者)