„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie werden Schnittstellen in Go: (Value, Type) Pair oder Method Table dargestellt?

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

Veröffentlicht am 08.11.2024
Durchsuche:811

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

Interface-Darstellung in Go verstehen

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

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 betont der andere Artikel, 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 Binary-Typ 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 untersuchen, indem das Paar (Wert, Typ) über die Methoden „reflect.ValueOf“ und „reflect.TypeOf“ verfügbar gemacht wird.

Freigabeerklärung Dieser Artikel wird reproduziert unter: 1729758157 Wenn ein Verstoß vorliegt, wenden Sie sich bitte an [email protected], um ihn zu löschen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3