Зарегистрируйтесь, чтобы продолжить обучение

Альтернативная условная конструкция Основы Go

В Go, кроме привычного if, есть ещё одна конструкция ветвления — switch. Она используется для выбора одного из нескольких возможных путей выполнения кода. На первый взгляд switch в Go похож на аналогичную конструкцию из других языков (например, C или Java), но его поведение отличается в важных деталях.

x := 10

switch x {
case 10:
    fmt.Println("case 10")
default:
    fmt.Println("default case")
}

Вывод:

case 10

В этом примере x сравнивается с каждым case. Как только находится совпадение, выполняется соответствующий блок, и switch завершается автоматически — писать break не нужно. Кроме того, default не обязан идти последним — он всегда выполняется в последнюю очередь, если не было совпадений.

Можно использовать switch без выражения. В этом случае он работает как if-else if, проверяя условия по порядку:

x := 10

switch {
case x < 0:
    fmt.Println("negative")
case x == 0:
    fmt.Println("zero")
case x > 0:
    fmt.Println("positive")
}

Вывод:

positive

Такой вариант удобен, когда нужно проверить набор условий, а не одно значение.

Ключевое слово fallthrough

В Go по умолчанию не происходит проваливания в следующий case, как это бывает в других языках. Но если вы хотите принудительно продолжить выполнение следующего блока, можно использовать fallthrough:

x := 10

switch {
case x == 10:
    fmt.Println("equal 10 case")
    fallthrough
case x < 20:
    fmt.Println("less than 20 case")
}

Вывод:

equal 10 case
less than 20 case

Ключевое слово fallthrough всегда выполняет следующий case, даже если его условие не подходит. Это может привести к неожиданному поведению, поэтому используется редко и осознанно.


Дополнительные материалы

  1. Switch statements

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff