Answers:
“ break”语句终止最里面的“ for”,“ switch”或“ select”语句的执行。
BreakStmt = "break" [ Label ] .
如果有标签,则必须是一个封闭的“ for”,“ switch”或“ select”语句的标签,并且该标签的执行终止(§For语句,§Switch语句,§Select语句)。
L: for i < n { switch i { case 5: break L } }
因此,break
示例中的switch
语句终止该语句,即“最内层”语句。
是的,break
破坏内心switch
。
https://play.golang.org/p/SZdDuVjic4
package main
import "fmt"
func main() {
myloop:for x := 0; x < 7; x++ {
fmt.Printf("%d", x)
switch {
case x == 1:
fmt.Println("start")
case x == 5:
fmt.Println("stop")
break myloop
case x > 2:
fmt.Println("crunching..")
break
default:
fmt.Println("idling..")
}
}
}
0idling.. 1start 2idling.. 3crunching.. 4crunching.. 5stop Program exited.
这应该可以解释。
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
永远运行
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
再次,永远运行
但
package main
import "fmt"
func main() {
d:
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break d
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
会打印sjus ...清楚吗?
break
内部的用例是什么?select {}
case