@almazius

Как под капотом реализованы интерфейсы в go?

Как под капотом реализованы интерфейсы в go. Знаю, что это стрктура с какими-то полями, но этого мало. Нужно понять что находится в этой структуре и как она понимает, что некая структура его рализует
  • Вопрос задан
  • 793 просмотра
Решения вопроса 1
@almazius Автор вопроса
https://github.com/teh-cmc/go-internals/blob/maste...
Здесь вроде очень хорошо расписано внутреннее устройстов интерфейсов
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
Когда создаешь переменную типа интерфейс (не пустой, а именованный интерфейс с методами), то под капотом это структура с двумя полями. Указатель на данные и указатель на таблицу виртуальных методов.

При вызове метода гошка на рантайме по таблице находит место в памяти, где этот метод хранится и вызывает его. Причем, первый вызов будет подольше, а следующие вызовы уже быстрее из-за кэширования.
Ответ написан
Комментировать
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Тут пишут https://go.dev/tour/methods/9 весьма сухо.

Interfaces
An interface type is defined as a set of method signatures.
A value of interface type can hold any value that implements those methods.


Судя по всему Google не особо заинтересован описывать детали реализации интерфейса.
Возможно на реализацию нет спеки. И Google планирует в будущем ее изменять.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Я думаю надо начать с официального гайда
https://www.golangprograms.com/reflection-in-golan....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы