НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
Golang. Уроки для початківців

En

Go Інструкція switch


Інструкція switch

Використовуйте інструкцію switch, щоб вибрати один із багатьох блоків коду для виконання.

Інструкція switch у Go подібна до інструкцій в мовах C, C++, Java, JavaScript та PHP. Різниця полягає в тому, що вона виконує лише відповідний кейс, тому їй не потрібна інструкція break.


Синтаксис однокейсного switch

Синтаксис

switch вираз {
кейс x:
   // блок коду
кейс y:
   // блок коду
кейс z:
...
default:
   // блок коду
}

Ось як це працює:

  • Вираз обчислюється один раз
  • Значення виразу switch порівнюється зі значеннями кожного case
  • Якщо є збіг, виконується відповідний блок коду
  • Ключове слово default є необов’язковим. Воно визначає якийсь код для запуску, якщо немає відповідності case

Приклад однокейсного switch

У прикладі нижче для обчислення назви дня тижня використовується номер дня тижня:

Приклад

package main
import ("fmt")

func main() {
  day := 4

  switch day {
  case 1:
    fmt.Println("Понеділок")
  case 2:
    fmt.Println("Вівторок")
  case 3:
    fmt.Println("Середа")
  case 4:
    fmt.Println("Четвер")
  case 5:
    fmt.Println("П’ятниця")
  case 6:
    fmt.Println("Субота")
  case 7:
    fmt.Println("Неділя")
  }
}

Результат:

Четвер
Спробуйте самі »

Ключове слово default

Ключове слово default визначає певний код для запуску, якщо немає відповідності кейса:

Приклад

package main
import ("fmt")

func main() {
  day := 8

  switch day {
  case 1:
    fmt.Println("Понеділок")
  case 2:
    fmt.Println("Вівторок")
  case 3:
    fmt.Println("Середа")
  case 4:
    fmt.Println("Четвер")
  case 5:
    fmt.Println("П’ятниця")
  case 6:
    fmt.Println("Субота")
  case 7:
    fmt.Println("Неділя")
  default:
    fmt.Println("Не будній день")
  }
}

Результат:

Не будній день
Спробуйте самі »

Усі значення case повинні мати той самий тип, що й вираз switch. Інакше компілятор викличе помилку:

Приклад

package main
import ("fmt")

func main() {
  a := 3

  switch a {
  case 1:
    fmt.Println("a є один")
  case "b":
    fmt.Println("a є b")
  }
}

Результат:

./prog.go:11:2: не можна використовувати "b" (введіть нетиповий рядок) як тип int
Спробуйте самі »

Go Вправи

Перевірте себе за допомогою вправ

Вправа:

Вставте відсутні частини, щоб завершити наступну інструкцію switch.

package main
import ("fmt")
func main() { var day = 2 switch { (1): fmt.Print("Saturday") (2): fmt.Print("Sunday") } }