Понимание представления интерфейса в 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.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3