capypad
0 Tage Serie
go / beginner
Snippet

Switch-Anweisungen in Go

Go's switch ist flexibler als in vielen anderen Sprachen. Es kann gegen Werte oder Bedingungen ohne Ausdruck vergleichen. Cases fallen nicht standardmäßig durch (kein break nötig), aber du kannst `fallthrough` verwenden um fortzufahren. Mehrere Werte in einem Case werden durch Kommas getrennt. Der Ausdruck kann inline deklariert werden wie gezeigt mit `day := time.Now().Weekday()`.

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
23
24
25
26
27
28
29
30
package main
 
import (
"fmt"
"time"
)
 
func grade(score int) string {
switch {
case score >= 90:
return "A"
case score >= 80:
return "B"
case score >= 70:
return "C"
default:
return "F"
}
}
 
func main() {
switch day := time.Now().Weekday(); day {
case time.Saturday, time.Sunday:
fmt.Println("Weekend!")
default:
fmt.Println("Weekday:", day)
}
 
fmt.Println("Score 85:", grade(85))
}
Erklärung
1
switch {
Switch ohne Ausdruck evaluiert Boolesche Bedingungen
2
case score >= 90:
Bedingungs-basierter Case mit Vergleichsoperatoren
3
return "A"
Kein Fallthrough - Ausführung stoppt nach passendem Case
4
case time.Saturday, time.Sunday:
Mehrere Werte in einem Case durch Komma getrennt
5
switch day := time.Now().Weekday(); day {
Inline-Variablendeklaration in Switch-Anweisung