Переключатель типов без провала в Go
В переключателе типов провала в следующую
ветку нет. Заголовок с утверждением .(type)
и ветки по типам устроены иначе, чем выбор
по значению, и язык запрещает туда вставлять
команду провала.
Компилятор не принимает провал в таком блоке. Каждая ветка по типу выполняется отдельно, как вы уже видели на примерах с интерфейсом, без соседнего перехода. Тот же запрет действует и для короткой формы без имени переменной в заголовке.
Попытка дописать команду после печати в
ветке int не проходит сборку:
var x any = 10
switch v := x.(type) {
case int:
fmt.Println("int", v)
fallthrough
case string:
fmt.Println("str", v)
}
Дан следующий код:
var x any = "hi"
switch x.(type) {
case string:
fmt.Println("s")
fallthrough
case int:
fmt.Println("i")
}
Скажите, соберется ли программа.
Скажите, можно ли в переключателе типов
выполнить две ветки case подряд
для одного значения той же командой,
что работает при выборе по числу.
Дана переменная:
var x any = true
Напишите переключатель типов, который
печатает "bool" или "other"
без перехода в соседнюю ветку.