Go语言中的 continue 就是跳过当次的循环,执行下一次的循环语句。
可是在多重的循环中,也可用 label 标出想 continue 的循环。这点容易被忽略。
package main
import (
"fmt"
"time"
)
func main() {
walk:
for i := 0; i < 10; i++ {
time.Sleep(time.Second)
fmt.Println("go => %d", i)
if i == 5 {
continue walk //这里有walk label
}
//fmt.Println("gogogo => %d", i)
for i := 0; i < 3; i++ {
fmt.Println("gogogo => %d", i)
continue walk
}
}
}
go => %d 0
gogogo => %d 0
go => %d 1
gogogo => %d 0
go => %d 2
gogogo => %d 0
go => %d 3
gogogo => %d 0
go => %d 4
gogogo => %d 0
go => %d 5
go => %d 6
gogogo => %d 0
go => %d 7
gogogo => %d 0
go => %d 8
gogogo => %d 0
go => %d 9
gogogo => %d 0
go => %d 0
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 1
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 2
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 3
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 4
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 5
go => %d 6
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 7
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 8
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2
go => %d 9
gogogo => %d 0
gogogo => %d 1
gogogo => %d 2