В Go присутствует единственная альтернатива if
— конструкция switch
. Для этой конструкции используется стандартный синтаксис, но логика работы отличается от С-подобных языков. Когда срабатывает условие какого-либо case, программа выполняет блок и выходит из конструкции switch
без необходимости писать break
:
x := 10
switch x {
default: // default всегда выполняется последним независимо от расположения в конструкции
fmt.Println("default case")
case 10:
fmt.Println("case 10")
}
Output:
case 10
Однако при необходимости можно реализовать логику С-подобных языков и «провалиться» в следующий case
с помощью команды fallthrough
. Ключевое слово fallthrough
позволяет нам выполнить следующий блок case
без проверки его условия.
x := 10
switch { // выражение отсутствует. Для компилятора выглядит как: switch true
default:
fmt.Println("default case")
case x == 10:
fmt.Println("equal 10 case")
fallthrough
case x < 10:
fmt.Println("less 10 case")
}
Output:
equal 10 case
less 10 case
В примере, выполнится условие x == 10
, а затем, благодаря fallthrough
сразу же выполнится и условие ниже.
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты