Что такое type assertion с generics?

Middle+
135 просмотров
AFK Offer AI

Type assertion к generic параметру напрямую не работает — T это не interface. Но можно привести к any: var x T; any(x).(ConcreteType). Или использовать type switch: switch v := any(x).(type) { case int: ... }. Это бывает нужно для специализации — generic функция с базовой реализацией и оптимизированной веткой для конкретного типа. Но злоупотреблять не стоит — если пишешь type switch на каждый тип, generics тебе не нужны. Лучше сделать constraint точнее или использовать обычные интерфейсы.

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

Как работает io.Pipe?