Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmCdSw 110 of 350 menu
◀ ▶

Конструкция switch в Go

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

num := 1 switch num { case 1: /* здесь код, который выполнится в случае, если переменная имеет значение 1 */ case 2: /* здесь код, который выполнится в случае, если переменная имеет значение 2 */ default: /* здесь код, который выполнится в случае, если значение не совпало ни с одним */ }

Конструкция представляет собой альтернативу цепочке else if. Пусть у нас есть такой код:

num := 1 if num == 1 { fmt.Println("variant 1") // сработает это } else if num == 2 { fmt.Println("variant 2") } else if num == 3 { fmt.Println("variant 3") } else { fmt.Println("variant not supported") }

Перепишем этот код через switch-case:

num := 1 switch num { case 1: fmt.Println("variant 1") // сработает это case 2: fmt.Println("variant 2") case 3: fmt.Println("variant 3") default: fmt.Println("variant not supported") }

Блок default является необязательным. Давайте его уберем:

num := 1 switch num { case 1: fmt.Println("variant 1") // сработает это case 2: fmt.Println("variant 2") case 3: fmt.Println("variant 3") }

Конструкция switch сравнивает одно значение с несколькими ветками. После ключевого слова пишут выражение, затем список веток case. Когда значение совпало с одной веткой, выполняются команды только этой ветки, следующие ветки не запускаются.

Если ни одна ветка не подошла, можно добавить default с командами по умолчанию. Блок каждой ветки оборачивают фигурными скобками только когда нужно несколько команд подряд.

Выберем сообщение по коду дня:

day := 3 switch day { case 1: fmt.Println("mon") case 2: fmt.Println("tue") case 3: fmt.Println("wed") default: fmt.Println("other") }

При значении вне списка сработает ветка по умолчанию:

day := 9 switch day { case 1: fmt.Println("mon") case 2: fmt.Println("tue") default: fmt.Println("other") }

Дано число:

level := 2

Выведите "easy", "mid" или "hard" для 1, 2 и остальных.

Дана переменная:

key := byte('b')

Сопоставьте key с byte('a') и byte('b') и выведите разные слова.

Дана переменная:

answer := 'y'

Сопоставьте answer с 'y' и 'n' и выведите "ok" для прочих рун.

Переменная num может принимать значения 1, 2, 3 или 4. Определите, в какую пору года попадает значение этой переменной.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить