Назад к урокам

Switch в Go

Урок объясняет работу оператора switch в Go: базовый синтаксис, сравнение значений, проверку нескольких вариантов, выражения в case и использование fallthrough.

Начинающий7 min

🔀 Switch в Go

Оператор switch позволяет удобно проверять выражение на соответствие разным вариантам. Это более чистая и читаемая альтернатива цепочкам if..else if.


📌 Базовый синтаксис

switch value {
case option1:
    // действие
case option2:
    // действие
default:
    // код по умолчанию
}

Switch выполняется сверху вниз и выбирает первый подходящий case.


🧩 Пример использования

x := 3

switch x {
case 1:
    fmt.Println("1")
case 2:
    fmt.Println("2")
case 3:
    fmt.Println("3")
default:
    fmt.Println("other:", x)
}

Switch может работать с любыми типами: строками, числами, результатами выражений.


🌐 Пример со строками

url := "example.com"

switch url {
case "example.com":
    fmt.Println("test")
case "google.com":
    fmt.Println("live")
default:
    fmt.Println("dev")
}

🧠 Условные выражения в case

В case можно использовать выражения, сравнения и функции:

switch result := calculate(5); {
case result > 10:
    fmt.Println(">10")
case result == 6:
    fmt.Println("==6")
case result < 10:
    fmt.Println("<10")
}

Здесь switch работает как набор if-условий.


🔁 Проверка нескольких значений в одном case

switch letter {
case 'a', 'e', 'i', 'o', 'u':
    fmt.Println("lowercase vowel")
case 'A', 'E', 'I', 'O', 'U':
    fmt.Println("uppercase vowel")
default:
    fmt.Println("not a vowel")
}

🎯 Fallthrough

По умолчанию switch останавливается после первого совпадения. Ключевое слово fallthrough заставляет выполнить следующий case:

switch letter {
case 'a', 'e', 'i', 'o', 'u':
    fmt.Println("a vowel")
    fallthrough
case 'A', 'E', 'I', 'O', 'U':
    fmt.Println("vowels are great")
default:
    fmt.Println("something else")
}

Используй осторожно - fallthrough может усложнять логику.


📘 Итоги

  • switch - удобная альтернатива множеству if..else if.
  • Можно проверять значения, выражения, вызовы функций.
  • Один case может содержать несколько значений.
  • fallthrough позволяет выполнить следующий блок.
  • switch делает код лаконичным, читаемым и логичным.