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!