Несколько значений в case в Go
Сейчас мы изучим, как объединить несколько значений в одной
ветке switch. В case их перечисляют через запятую.
Если значение совпало с любым из списка, выполняется один
и тот же блок команд для всех этих значений.
В Go следующая ветка сама не запускается. Отдельный break
для этого не нужен. Команду fallthrough пишут отдельно,
только когда провал в следующую ветку нужен специально.
Запись значений через запятую такого провала не делает.
Пусть переменная num равна 1. Для значений
1 и 2 печатаем одно слово, для 3 - другое:
num := 1
switch num {
case 1, 2:
fmt.Println("a") // сработает это
case 3:
fmt.Println("b")
}
Поменяем значение переменной на 3. Сработает другая ветка,
а первая группа значений останется в стороне:
num := 3
switch num {
case 1, 2:
fmt.Println("a")
case 3:
fmt.Println("b") // сработает это
}
Тот же прием подходит и для рун. Пусть символ входит в группу:
ch := 'a'
switch ch {
case 'a', 'e', 'i':
fmt.Println("vowel") // сработает это
default:
fmt.Println("cons")
}
Строки сравнивают так же, как знаком ==. Несколько строк
можно перечислить в одной и той же ветке:
lang := "de"
switch lang {
case "ru", "by":
fmt.Println("east")
case "en", "de":
fmt.Println("west") // сработает это
default:
fmt.Println("other")
}
Дано число:
code := 404
Для 404 и 500 выведите "err", для остальных
значений выведите "fine".
Дана переменная:
mark := 'x'
Для mark равного 'x', 'y' или 'z'
выведите "tail", иначе выведите "head".
Дано число:
slot := 0
Сопоставьте 1, 2 и 3 с одним словом
и выведите "other" для текущего значения slot.
Дано число:
day := 6
Для чисел 1, 2 и 3 выведите "start",
для 4, 5 и 6 - "middle", для 7 -
"end", иначе выведите "unknown".
Дана переменная:
num := 1
Если num равно 1 или 2, выведите "a".
Если оно равно 3, выведите "b".