Операторы switch в Go
switch с меткой и без метки, fallthrough
«Операторы switch в Go» — бесплатный урок Go Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.
Основы switch
switch в Go мощнее, чем в C: по умолчанию переход к следующей ветви не выполняется, а ветви могут содержать несколько значений:
day := "Monday"
switch day {
case "Saturday", "Sunday":
fmt.Println("Weekend")
default:
fmt.Println("Weekday")
}Без неявного перехода к следующей ветви
В Go выполнение каждой ветви case завершается автоматически, в отличие от C, где необходимо явно писать break:
- Код становится чище, а ошибок — меньше
- Используйте
fallthroughявно, когда нужно поведение как в C; это требуется редко
switch с оператором инициализации
Как и if, switch принимает необязательный оператор инициализации:
switch os := runtime.GOOS; os {
case "linux":
fmt.Println("Linux")
case "darwin":
fmt.Println("macOS")
default:
fmt.Printf("Other: %s\n", os)
}switch без выражения (альтернатива цепочке if-else)
В switch без выражения после ключевого слова нет выражения — каждая ветвь case вычисляет логическое условие:
score := 75
switch {
case score >= 90:
fmt.Println("A")
case score >= 80:
fmt.Println("B")
case score >= 70:
fmt.Println("C")
default:
fmt.Println("F")
}Переключатель типов
Переключатель типов проверяет динамический тип значения интерфейса:
func describe(i interface{}) {
switch v := i.(type) {
case int:
fmt.Printf("int: %d\n", v)
case string:
fmt.Printf("string: %s\n", v)
default:
fmt.Printf("unknown: %T\n", v)
}
}fallthrough
Используйте fallthrough, чтобы явно выполнить тело следующей ветви независимо от её условия. Обычно это не требуется:
n := 1
switch n {
case 1:
fmt.Println("one")
fallthrough
case 2:
fmt.Println("one or two")
}Несколько значений в одной ветви
Перечислите несколько значений через запятую в одной ветви case:
func isVowel(c byte) bool {
switch c {
case 'a', 'e', 'i', 'o', 'u':
return true
}
return false
}switch и if-else
Используйте switch, когда:
- Сравниваете одно выражение с множеством значений
- Используете переключатель типов для диспетчеризации интерфейса
- Читаемость улучшается по сравнению с цепочкой if-else
Используйте if-else, когда условия являются разными логическими выражениями.
break в switch
Чтобы досрочно выйти из switch, используйте break. Чтобы выйти из внешнего цикла изнутри switch, используйте именованный break:
loop:
for {
switch input() {
case "quit":
break loop // exits the for loop
}
}Ветка default
Ветка default выполняется, когда ни одна другая ветвь не подходит. Рекомендации:
- Всегда включайте
defaultпри обработке перечислений, чтобы обнаруживать неожиданные значения - Размещайте её внизу для удобства чтения
- В переключателях типов используйте
default, чтобы корректно обрабатывать неподдерживаемые типы
Быстрая проверка
Что происходит в Go, когда ветвь switch подходит: выполняется ли переход к следующей ветви?
Итоги: switch в Go
switch в Go лаконичен и мощен:
- Неявного перехода к следующей ветви нет — явно используйте
fallthrough - Оператор инициализации для ограничения области видимости временных переменных
- switch без выражения как альтернатива цепочке if-else
- Переключатель типов для диспетчеризации интерфейса
- Несколько значений в одной ветви через запятую
Далее: управление циклами с помощью break, continue и меток.
Изучай Go с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 51
- Уроки
- 203
Часто задаваемые вопросы
Урок «Операторы switch в Go» бесплатный?
Да — полный текст урока «Операторы switch в Go» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.
Чему я научусь в уроке «Операторы switch в Go»?
switch с меткой и без метки, fallthrough Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Go Academy?
Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Операторы switch в Go»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Go Academy?
Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Операторы if и выражения инициализации
- Цикл for: все варианты
- Операторы switch в Go
- break, continue и метки