Что такое itab?

Senior
113 просмотров
AFK Offer AI

Itab (interface table) — внутренняя структура Go, которая связывает конкретный тип с интерфейсом. Она содержит тип, интерфейс и массив указателей на методы. Когда ты присваиваешь значение интерфейсной переменной, runtime ищет или создаёт itab для этой пары. Все itab хранятся в глобальной хеш-таблице и кэшируются навсегда.

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

Что выведет: type T struct{}; func (T) M() { fmt.Println("T") }; type S struct { T }; func (S) M() { fmt.Println("S") }; var i interface{ M() } = S{}; i.M()?