Конструкция 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.
Определите, в какую пору года попадает
значение этой переменной.