Câu trả lời:
Phá vỡ các câu lệnh, Đặc tả ngôn ngữ lập trình Go.
Câu lệnh "break" chấm dứt thực thi câu lệnh "for", "switch" hoặc "select" trong cùng.
BreakStmt = "break" [ Label ] .
Nếu có nhãn, nhãn phải là câu lệnh "for", "switch" hoặc "select" kèm theo và đó là câu lệnh mà lệnh thực thi chấm dứt (câu lệnh §For, câu lệnh §Switch, câu lệnh §Select).
L: for i < n { switch i { case 5: break L } }
Do đó, break
câu lệnh trong ví dụ của bạn chấm dứt switch
câu lệnh, câu lệnh "trong cùng".
Vâng, break
phá vỡ nội tâm 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.
Chỉ từ một khối chuyển đổi. Có rất nhiều ví dụ trong mã riêng của Golang mà bạn có thể kiểm tra (so sánh phá vỡ bên trong với phá vỡ bên ngoài ).
điều này sẽ giải thích nó
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Chạy mãi mãi
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Một lần nữa, chạy mãi mãi
NHƯNG
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")
}
}
}
sẽ in sjus ... rõ ràng?
break
bên trongselect {}
vì chỉ có mộtcase
có thể được chọn?