Изявленията от вида switch (превключване) изразяват условия с множество разклонения.
import (
"fmt"
"time"
)
func main() {
Ето просто изявление switch.
i := 2
fmt.Print("Пишем ", i, " като ")
switch i {
case 1:
fmt.Println("едно")
case 2:
fmt.Println("две")
case 3:
fmt.Println("три")
}
Може да ползвате запетаи, за да разделите множество
изрази в едно изявление в един случай – case.
В този пример ползваме и незадължителния случай
default (когато не попаднем в нито един от
изброените преди това случаи).
switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("Почивен ден е.")
default:
fmt.Println("Работен ден е.")
}
switch без израз е друг начин да извършваме
логически действия както при if/else. Тук също
показваме, че изразите case може и да не са
непроменливи (константи).
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Преди обяд е.")
default:
fmt.Println("След обяд е.")
}
switch (превключване) между видове сравнява
видовете на променливите вместо техните стойности.
Можете да ползвате този подход, за да откриете вида
за взаимодействие с дадена стойност1. В този
пример променливата t ще има вид, съответстващ на
вида на нейния случай.
каквоСъмАз := func(i any) {
switch t := i.(type) {
case bool:
fmt.Println("Аз съм булева стойност – %T.\n", t)
case int:
fmt.Printf("Аз съм цяло число – %T.\n", t)
default:
fmt.Printf("Непознат тип – %T\n", t)
}
}
каквоСъмАз(true)
каквоСъмАз(1)
каквоСъмАз("Ей!")
}
$ go run switch.go
Пишем 2 като две
Работен ден е.
След обяд е.
Аз съм булева стойност – bool.
Аз съм цяло число – int.
Непознат тип – string
Следващ пример: Поредици.