Можно ли проверять типы в Go

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

Ответ

В Go можно проверять типы с помощью type assertion и type switch.

Type assertion позволяет получить конкретный тип из интерфейса:

var val interface{} = "hello"
str, ok := val.(string) // ok == true, str == "hello"

Type switch удобен для множественных проверок:

switch v := val.(type) {
case string:
    fmt.Println("string:", v)
case int:
    fmt.Println("int:", v)
default:
    fmt.Println("unknown type")
}

Оба способа работают только с интерфейсами. Для проверки типов структур можно использовать рефлексию (reflect), но это менее эффективно.