Go 语言中 label 的使用
Wang-Kai opened this issue · 0 comments
Wang-Kai commented
问题场景:
package main
import "fmt"
func main() {
for _, i := range []string{"a", "b"} {
fmt.Printf("Outer ==> %s\n", i)
for _, j := range []int{1, 2, 3} {
fmt.Printf("Inner ==> %d\n", j)
if j == 2 {
break
}
}
}
}
开发中会遇到循环嵌套的场景,有时候的需求是:当在内部循环内,如果条件不满足,希望连外部循环也跳出,但简单的 break
操作仅能跳出一层循环,代码输出:
$ go run main.go
Outter ==> a
Inner ==> 1
Inner ==> 2
Outter ==> b
Inner ==> 1
Inner ==> 2
这个时候就需要使用 label
了,使用 OuterLoop
定义外部的 for 循环 label,然后在 break
后加上要跳出的 label。
package main
import "fmt"
func main() {
OuterLoop:
for _, i := range []string{"a", "b"} {
fmt.Printf("Outter ==> %s\n", i)
for _, j := range []int{1, 2, 3} {
fmt.Printf("Inner ==> %d\n", j)
if j == 2 {
break OuterLoop
}
}
}
}
代码输出:
$ go run main.go
Outter ==> a
Inner ==> 1
Inner ==> 2