Respostas:
Instruções de quebra, The Go Programming Language Specification.
Uma instrução "break" finaliza a execução da instrução "for", "switch" ou "select" mais interna.
BreakStmt = "break" [ Label ] .
Se houver um rótulo, deve ser o de uma instrução "for", "switch" ou "select" anexada, e essa é a cuja execução termina (§For declarações, §Switch declarações, §Selecionar instruções).
L: for i < n { switch i { case 5: break L } }
Portanto, a break
instrução no seu exemplo finaliza a switch
instrução, a instrução "mais interna".
Sim, break
quebra o interior 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.
Apenas a partir de um bloco de interruptores. Existem muitos exemplos no código do Golang que você pode examinar (compare a quebra interna com a quebra externa ).
isso deve explicar isso.
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Corre para sempre
for{
x := 1
switch {
case x >0:
fmt.Println("sjus")
break
case x == 1:
fmt.Println("GFVjk")
default:
fmt.Println("daslkjh")
}
}
}
Mais uma vez, corre para sempre
MAS
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")
}
}
}
vai imprimir sjus ... claro?
break
interiorselect {}
já que apenas umcase
pode ser selecionado?