«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как интерфейсы представлены в Go: пара (значение, тип) или таблица методов?

Как интерфейсы представлены в Go: пара (значение, тип) или таблица методов?

Опубликовано 8 ноября 2024 г.
Просматривать:481

How are Interfaces Represented in Go: (Value, Type) Pair or Method Table?

Понимание представления интерфейса в Go

При работе с интерфейсами в Go важно понимать их базовое представление. Два ключевых ресурса проливают свет на эту тему, но их точки зрения различаются.

В статье «Законы отражения» (http://blog.golang.org/laws-of-reflection) представлена ​​концепция интерфейса. содержащий пару (значение, тип), как показано в примере r io.Reader. Эта пара включает значение tty и его тип *os.File.

В качестве альтернативы в другой статье подчеркивается, что интерфейсы содержат только методы для удовлетворения спецификации интерфейса. В примере типа Stringer Binary в таблице itable (таблица методов интерфейса) перечислены только методы, необходимые для реализации String, исключая другие методы, определенные для типа Binary.

Чтобы согласовать эти точки зрения, рассмотрите интерфейсы в Go. как «объекты-обертки» во время выполнения. Они предоставляют информацию о другом объекте, itable, который направляет среду выполнения при выполнении методов обернутого объекта. Например, при вызове Read on r среда выполнения использует itable для перехода к соответствующей функции в макете типа os.File.

Отражение, как описано в статье «Законы отражения», предоставляет удобный способ изучить это представление, раскрывая пару (значение, тип) с помощью методов Reflection.ValueOf и Reflection.TypeOf.

Заявление о выпуске Эта статья перепечатана по адресу: 1729758157. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3