Диапазон в switch в Go
Сейчас мы зададим диапазон чисел в switch без выражения.
В одной ветке case пишут два сравнения через &&.
Нижняя и верхняя границы должны быть истинны одновременно.
Пусть оценка равна 7 и попадает в числовой диапазон
от 1 до 10 включительно:
n := 7
switch {
case n >= 1 && n <= 10:
fmt.Println("inside") // сработает это
case n < 1:
fmt.Println("low")
default:
fmt.Println("high")
}
Поменяем число так, чтобы оно оказалось ниже диапазона:
n := 0
switch {
case n >= 1 && n <= 10:
fmt.Println("inside")
case n < 1:
fmt.Println("low") // сработает это
default:
fmt.Println("high")
}
Порядок веток важен. Более узкий диапазон ставят выше общего, иначе широкая ветка заберет число раньше. Так число попадает ровно в одну подходящую группу:
n := 5
switch {
case n >= 1 && n <= 5:
fmt.Println("narrow") // сработает это
case n >= 1 && n <= 10:
fmt.Println("wide")
default:
fmt.Println("other")
}
Можно задать несколько диапазонов подряд. Пусть число равно
15 и попадает во второй промежуток:
n := 15
switch {
case n >= 1 && n <= 10:
fmt.Println("ten")
case n >= 11 && n <= 20:
fmt.Println("twenty") // сработает это
default:
fmt.Println("other")
}
Дано число:
age := 14
Для чисел от 0 до 12 выведите "kid",
для чисел от 13 до 17 выведите "teen",
иначе выведите "grown".
Дано число:
slot := 3
Если slot от 1 до 5, выведите "low".
Если оно от 6 до 10, выведите "high".
Дано число:
num := 3
Проверьте в switch без выражения, что num больше
нуля и меньше 5. При успехе выведите "Y",
иначе выведите "N".
Скажите, почему диапазон пишут в switch без выражения.