Перейти к основному содержимому

Оператор switch

Когда от значения зависит, какой из нескольких блоков кода должен выполниться, оператор switch позволяет выбрать нужный.

Если вы использовали switch в других языках, версия в Go покажется вам знакомой, но с одним отличием: выполняется только совпавший случай. Выполнение не переходит к следующему случаю, поэтому вам не нужно писать break в конце каждого из них.


Синтаксис switch с одним случаем

Go вычисляет выражение switch один раз, а затем сравнивает результат с каждым значением case. Выполняется блок под совпавшим case. Вы также можете добавить необязательный default, чтобы задать код на случай, когда ни один case не подходит.

Синтаксис Switch

main.go
switch expression {
case x:
  // code block
case y:
  // code block
case z:
...
default:
  // code block
}

Пример switch с одним случаем

Здесь число обозначает день недели, а switch превращает его в название этого дня. Когда day равно 4, результатом будет Thursday.

Пример

Prompt
Используйте оператор switch с переменной day, равной 4. Выведите название дня недели для каждого случая 1-7 (с понедельника по воскресенье).
Вывод: Программа на Go и захваченный вывод

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

Если ни один из случаев не подходит, выполняется код под default. В этом примере ни один случай не охватывает значение 8, поэтому выводится сообщение из default.

Пример

Prompt
Используйте switch с переменной day, равной 8, и случаями 1-7 для названий дней недели. Добавьте случай default, который выводит "Не день недели".
Вывод: Программа на Go и захваченный вывод

Типы случаев должны совпадать

Каждое значение case должно иметь тот же тип, что и выражение switch. Если добавить другой тип, программа не скомпилируется. В этом примере a имеет тип int, поэтому случай со строкой "b" вызывает ошибку.

Пример

Prompt
Покажите switch по переменной типа int, где один из случаев использует строковое значение, что приводит к ошибке компиляции.
Вывод: Программа на Go и захваченный вывод