go / expert
Snippet
Beendigung der äußeren Ausführungsschleife mit beschrifteten Break-Anweisungen
Innerhalb einer switch-Anweisung, die in einer for-Schleife verschachtelt ist, beendet ein einfaches break nur den inneren switch-Block. Die Verwendung eines beschrifteten break-Ziels (break StateLoop) unterbricht explizit die äußere umschließende Schleife.
snippet.go
go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package mainimport "fmt"func runFSM(input []int) {StateLoop:for i, v := range input {switch {case v < 0:fmt.Println("Negative encountered, breaking state loop")break StateLoopcase v == 0:continue StateLoopdefault:fmt.Printf("Processing step %d: %d\n", i, v)}}}func main() {runFSM([]int{1, 0, 2, -1, 3})}
Erklärung
1
StateLoop:
Deklariert ein Anweisungs-Label, das auf den äußeren for-Schleifenblock abzielt.
2
switch {
Wertet bedingte Zweige innerhalb des Schleifenkörpers aus.
3
break StateLoop
Umgeht das Standard-Break-Verhalten von switch, um die beschriftete äußere Schleife sofort zu beenden.
4
continue StateLoop
Überspringt den Rest der aktuellen Iteration und rückt die beschriftete äußere Schleife zum nächsten Element vor.