Wie werden Schnittstellen in Go: (Value, Type) Pair oder Method Table dargestellt?

Patricia Arquette
Freigeben: 2024-10-24 18:12:02
Original
318 Leute haben es durchsucht

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

Schnittstellendarstellung in Go verstehen

Bei der Arbeit mit Schnittstellen in Go ist es wichtig, deren zugrunde liegende Darstellung zu verstehen. Zwei wichtige Ressourcen beleuchten dieses Thema, aber ihre Perspektiven sind unterschiedlich.

Der Artikel „Laws of Reflection“ (http://blog.golang.org/laws-of-reflection) stellt das Konzept einer Schnittstelle vor enthält ein (Wert, Typ)-Paar, wie im Beispiel von r io.Reader zu sehen ist. Dieses Paar enthält den Wert tty und seinen Typ *os.File.

Alternativ wird im anderen Artikel betont, dass Schnittstellen nur Methoden zur Erfüllung der Schnittstellenspezifikation enthalten. Im Beispiel von Stringer mit dem Typ Binary listet die itable (Schnittstellenmethodentabelle) nur die Methoden auf, die für die String-Implementierung erforderlich sind, mit Ausnahme anderer Methoden, die für den Typ Binary definiert sind.

Um diese Perspektiven in Einklang zu bringen, betrachten Sie Schnittstellen in Go als „Wrapper-Objekte“ zur Laufzeit. Sie stellen Informationen über ein anderes Objekt, das itable, bereit, das die Laufzeit beim Ausführen von Methoden für das umschlossene Objekt anleitet. Wenn Sie beispielsweise Read auf r aufrufen, verwendet die Laufzeitumgebung itable, um zur entsprechenden Funktion innerhalb des os.File-Typ-Layouts zu springen.

Reflection, wie im Artikel „Laws of Reflection“ beschrieben, bietet eine praktische Möglichkeit Möglichkeit, diese Darstellung zu erkunden, indem das Paar (Wert, Typ) über die Methoden „reflect.ValueOf“ und „reflect.TypeOf“ verfügbar gemacht wird.

Das obige ist der detaillierte Inhalt vonWie werden Schnittstellen in Go: (Value, Type) Pair oder Method Table dargestellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!