go / expert
Snippet
Gezielte mehrebenen-Ablaufsteuerung durch gelabeltes Break in Type-Switches
Ein ungelabeltes break innerhalb eines switch-Blocks beendet in Go nur das switch-Konstrukt selbst, nicht jedoch eine umschließende for-Schleife. Durch Zuweisen eines Labels zur äußeren Schleife kann ein verschachteltes break die Schleifenausführung direkt abbrechen.
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 processItems(items []any) {OuterLoop:for _, item := range items {switch v := item.(type) {case int:if v < 0 {fmt.Println("Encountered negative int, breaking outer loop")break OuterLoop}case string:fmt.Println("String:", v)}}}func main() {processItems([]any{"hello", -5, "world"})}
Erklärung
1
OuterLoop:
Weist der äußeren for-Schleife ein Label für präzise Sprungsteuerung zu.
2
break OuterLoop
Beendet die Ausführung der gelabelten äußeren for-Schleife anstelle nur des Type-Switch-Blocks.