> Для чего нужен type switch в Go (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Lamoda
Стек: Go
> Пример ответа
Type switch в Go используется для выполнения различных действий в зависимости от динамического типа интерфейсного значения. Он позволяет заменить громоздкую цепочку if x.(type) проверок более лаконичным и безопасным синтаксисом.
Основные сценарии применения:
- Обработка ошибок - проверка конкретного типа ошибки (например,
*os.PathErrorили*net.DNSError). - Работа с интерфейсами - когда функция принимает
interface{}и нужно обработать разные типы (строка, число, срез). - Реализация паттерна "посетитель" - для разбора JSON, protobuf или AST.
Пример:
GOfunc 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 по конкретному типу (не для интерфейса). Это делает код чище и уменьшает вероятность ошибок приведения типов.
> Похожие задачи по Go
Для чего используется пакет errors в Go
Как реализуется раздача заданий и синхронизация горутин в воркерпуле в Go
Какие примитивы синхронизации есть в стандартной библиотеке Go
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
> Похожие задачи по backend
Для чего используется пакет errors в Go
Как реализуется раздача заданий и синхронизация горутин в воркерпуле в Go
Какие примитивы синхронизации есть в стандартной библиотеке Go
Как называются типы объектов, которые при модификации возвращают копию, а не изменяют исходный объект
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью