Как работает interface dispatch?

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

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

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

Что не так: type Counter struct { n int }; func (c Counter) Inc() { c.n++ }?