Использование switch в Go во многом схоже с использованием for и if. Условное выражение не должно быть заключено в круглые скобки ( ), но фигурные скобки { } обязательны. Также выражение switch может начинаться с инструкции, которая будет выполнена перед проверкой условия.
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Print("Go выполняется на ")
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
// freebsd, openbsd,
// windows...
fmt.Printf("%s.", os)
}
}
Порядок выполнения Switch
Условия блоков case проверяются сверху вниз до тех пор, пока одно из них не будет успешным. Например:
switch i {
case 0:
case f():
}
В этом примере f не вызывается если i==0.
Пример использования switch:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("Когда суббота?")
today := time.Now().Weekday()
switch time.Saturday {
case today + 0:
fmt.Println("Сегодня.")
case today + 1:
fmt.Println("Завтра.")
case today + 2:
fmt.Println("Через два дня.")
default:
fmt.Println("Слишком далеко.")
}
}
Switch без условия
Switch без условия это тоже самое, что и switch true.
Эта конструкция может быть использована как более ясный способ записи длинной цепочки if-then-else.
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Доброе утро!")
case t.Hour() < 17:
fmt.Println("Добрый день.")
default:
fmt.Println("Добрый вечер.")
}
}
Читайте также:
Комментариев нет:
Отправить комментарий