Что такое type switch в Go

«Что такое type switch в Go» — вопрос из категории Golang, который задают на 26% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

func checkType(x interface{}) {
    switch v := x.(type) {
    case int:
        fmt.Printf("Integer: %vn", v)
    case string:
        fmt.Printf("String: %vn", v)
    default:
        fmt.Printf("Unknown type: %Tn", v)
    }
}

Особенности:

  • Использует синтаксис x.(type) (только в switch)
  • Переменная v получает значение и конкретный тип для каждого case
  • Можно использовать для любого интерфейса
  • Порядок case важен - выполняется первый подходящий
  • default обрабатывает все неподходящие случаи