Что такое type switch?

Junior
1k просмотров
AFK Offer AI

Type switch — конструкция для определения динамического типа интерфейсной переменной. Удобнее цепочки type assertion-ов.

func describe(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("int: %d\n", v)
    case string:
        fmt.Printf("string: %s\n", v)
    case bool:
        fmt.Printf("bool: %t\n", v)
    default:
        fmt.Printf("unknown: %T\n", v)
    }
}

В отличие от обычного switch, v в каждом case имеет конкретный тип — не нужно дополнительное приведение. Часто используется в обработке ошибок (errors.As — альтернатива) и при работе с any/interface{}.

Следующий вопрос

Что такое контекст?