Risposte:
Dichiarazioni di break, The Go Programming Language Specification.
Un'istruzione "break" termina l'esecuzione dell'istruzione "for", "switch" o "select" più interna.
BreakStmt = "break" [ Label ] .
Se esiste un'etichetta, deve essere quella di un'istruzione "for", "switch" o "select" racchiusa, e quella è quella la cui esecuzione termina (§Per istruzioni, §Switch istruzioni, §Seleziona istruzioni).
L: for i < n { switch i { case 5: break L } }
Pertanto, l' break
istruzione nel tuo esempio termina l' switch
istruzione, l'istruzione "più interna".
Sì, break
rompe l'interno 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.
Solo da un blocco interruttore. Ci sono molti esempi nel codice di Golang che puoi esaminare (confronta l' interruzione interna con l' interruzione esterna ).
questo dovrebbe spiegarlo.
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Funziona per sempre
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Ancora una volta, corre per sempre
MA
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")
}
}
}
stamperà sjus ... cancella?
break
raggioselect {}
dal momento che solo unocase
può essere selezionato?