> Для чего нужен type switch в Go (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Lamoda

Стек: Go

> Пример ответа

Type switch в Go используется для выполнения различных действий в зависимости от динамического типа интерфейсного значения. Он позволяет заменить громоздкую цепочку if x.(type) проверок более лаконичным и безопасным синтаксисом.

Основные сценарии применения:

  • Обработка ошибок - проверка конкретного типа ошибки (например, *os.PathError или *net.DNSError).
  • Работа с интерфейсами - когда функция принимает interface{} и нужно обработать разные типы (строка, число, срез).
  • Реализация паттерна "посетитель" - для разбора JSON, protobuf или AST.

Пример:

GO
func describe(i interface{}) {
switch v := i.(type) {
case string:
fmt.Println("строка:", v)
case int:
fmt.Println("число:", v)
case error:
fmt.Println("ошибка:", v.Error())
default:
fmt.Printf("неизвестный тип: %T\n", v)
}
}

Type switch гарантирует, что каждая ветка получает значение с правильным типом, и компилятор проверяет исчерпываемость только для switch по конкретному типу (не для интерфейса). Это делает код чище и уменьшает вероятность ошибок приведения типов.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью