Когда ты вызываешь метод через интерфейс, Go использует itab — таблицу, которая связывает конкретный тип с интерфейсом. В itab хранятся указатели на методы типа, соответствующие интерфейсу. При вызове runtime берёт указатель на метод из itab и делает indirect call. Itab кэшируется — для пары (тип, интерфейс) itab создаётся один раз и переиспользуется.
Как работает interface dispatch?
Middle+
207 просмотровAFK Offer AI
Что не так: type Counter struct { n int }; func (c Counter) Inc() { c.n++ }?