Конструкция без выражения в Go
Без выражения каждая ветка сама пишет свою проверку.
После switch сразу идет блок с case,
а в каждой ветке вместо значения стоит полное
условие, как в обычной проверке: без круглых скобок.
Первая истинная ветка выполняется, остальные
пропускаются. Так удобно заменить длинную цепочку
else if, когда сравнивают одну переменную
с разными порогами.
Разделим число по знаку:
n := -4
switch {
case n < 0:
fmt.Println("neg")
case n == 0:
fmt.Println("zero")
default:
fmt.Println("pos")
}
Тот же прием для строки:
role := "admin"
switch {
case role == "admin":
fmt.Println("boss")
case role == "guest":
fmt.Println("visit")
default:
fmt.Println("user")
}
Дано число:
x := 0
Выведите "below", "zero" или "above"
без выражения после ключевого слова.
Дана переменная:
ready := true
Выберите ветку по ready и выведите "go"
или "wait".
Дана переменная:
ch := 'm'
Сравните ch с 'a' и 'm'
в отдельных ветках без выражения и выведите
разный текст.