#11 golang Оператор switch case - Особенности работы и использование break
Primary tabs
Forums:
В Go также есть множественный if else, когда вы можете комбинировать их в одну длинную цепочку:
cond := 1
// множественные if else
if cond == 1 {
fmt.Println("cond is 1")
} else if cond == 2 {
fmt.Println("cond is 2")
}
Это не всегда бывает удобно, поэтому дополнительно есть оператор switch. Оператор switch может работать по одной переменной: в блоке case должны быть указаны условия, на соответствие которым проверяется эта переменная.
Далее разберем особенности работы именно в Го.
Отсутствие "проваливания" и Несколько значений для одного варианта case
В отличие языка Си, где по умолчанию в switch case происходит проваливание в следующее условие и требуется писать везде break (если только вы не специально хотите использовать проваливание), в Go проваливание в переменные отсутствует. Нужно писать fallthrough, чтобы ваша программа провалилась в следующее условие.
Также в условиях, то есть в блоке case, может стоять не одно значение, а несколько, перечисленные через запятые:
// switch по 1 переменной
strVal := "name"
switch strVal {
case "name":
fallthrough // явно просим провалиться ниже
case "test", "lastName": // оба значения подходят
// что-то делаем
default:
// что-то делаем
}
-- и есть блок default, который будет выполнен тогда, когда ни одно из этих условий не применилось.
switch Без конкретной переменной
Помимо выполнения switch по одной переменной можно использовать произвольные условные выражения для выбора варианта:
// switch как замена многим if else
val1, val2 := 2, 2
switch {
case val1 > 1 || val2 < 11:
fmt.Println("Первый блок")
case val2 > 10:
fmt.Println("Второй блок")
}
Оператор break - завершаем switch
Чтобы покинуть вообще весь блок switch, в любой строке любого case можно использовать break:
val := "1qrwer"
key := "lastName"
switch {
case key == "lastName":
// полезная работа
break
println("Это не напечатается")
case key == "firstName" && val == "Vasily":
println("Выходим отсюда")
break
}
Завершения цикла из switch c помощью метки
Этот вопрос рассмотрим в следующем уроке про цикл for.
Видео-материалы
- golang Оператор switch case: ВкВидео | Ютуб | Телеграм
- Log in to post comments
- 55 reads