Odpowiedzi:
Instrukcje Break, specyfikacja języka programowania Go.
Instrukcja „break” kończy wykonywanie najbardziej wewnętrznej instrukcji „for”, „switch” lub „select”.
BreakStmt = "break" [ Label ] .Jeśli istnieje etykieta, musi to być ta zawierająca instrukcję „for”, „switch” lub „select”, a jest to ta, której wykonanie się kończy (instrukcje §Dla instrukcji, instrukcji przełączania, instrukcji wyboru).
L: for i < n { switch i { case 5: break L } }
Dlatego breakinstrukcja w przykładzie kończy switchinstrukcję, czyli instrukcję „najbardziej wewnętrzną”.
Tak, breakłamie wnętrze 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.
Tylko z bloku przełączników. Istnieje wiele przykładów we własnym kodzie Golanga, które możesz zbadać (porównaj przerwanie wewnętrzne z przerwaniem zewnętrznym ).
to powinno to wyjaśnić.
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Działa wiecznie
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Znowu działa wiecznie
ALE
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")
}
}
}
wypisze sjus ... wyczyść?
breakwewnątrz,select {}skorocasemożna wybrać tylko jeden ?