суббота, 5 января 2019 г.

Основы Go: switch

Использование 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("Добрый вечер.")
  }
}


Читайте также:


Комментариев нет:

Отправить комментарий