Zugriff auf übergeordnete Felder über eingebettete Methoden in Go: Ist das machbar?
In Go ermöglichen eingebettete Methoden das Einbetten von Typen in andere Typen und ermöglichen so Wiederverwendung von Code und Bereitstellung einer einfacheren Schnittstelle. Es stellt sich jedoch häufig die Frage: Können eingebettete Methoden auf Felder des übergeordneten Typs zugreifen?
Hintergrund:
Der Einbettungsmechanismus von Go nutzt die Komposition, um die Funktionalität eines Typs ohne zu erweitern Nachlass. Wenn ein Typ eingebettet wird, werden seine Felder und Methoden Teil des Einbettungstyps.
Ziel:
Das Ziel dieser Frage bezieht sich auf die Erstellung eines ORM im Active Record-Stil für Go, wo Methoden in die Benutzerstruktur eingebettet sind, um den Datenspeicher zu abstrahieren Operationen.
Beispiel:
type Foo struct { *Bar Name string } func (s *Foo) Method() { // How to access "Name" field from this embedded method? }
Frage:
Gibt es eine Möglichkeit, Felder der obersten Ebene zu erstellen ( übergeordnete Felder), auf die über eingebettete Methoden wie s.Name oder call zugegriffen werden kann s.Method()?
Antwort:
Go unterstützt den Zugriff auf übergeordnete Felder über eingebettete Methoden nicht nativ. Der Empfänger der eingebetteten Methode ist in diesem Fall streng an den eingebetteten Typ *Bar gebunden. Daher ist ein direkter Zugriff auf übergeordnete Felder nicht möglich.
Alternative Ansätze:
Das obige ist der detaillierte Inhalt vonKönnen eingebettete Methoden in Go auf übergeordnete Felder zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!