Funktionen als Strukturfelder vs. Strukturmethoden
In Go können Funktionen als Felder in Strukturen eingebettet oder als Methoden dieser Strukturen definiert werden . Wenn Sie die Unterschiede zwischen diesen Ansätzen verstehen, können Sie Ihr Codedesign optimieren.
Felder des Funktionstyps
Felder des Funktionstyps sind keine echten Methoden, die an den Strukturtyp angehängt sind. Sie speichern einen Verweis auf eine Funktion, anstatt Teil des Methodensatzes der Struktur zu sein.
Echte Methoden
Es handelt sich um echte Methoden, die mit dem Strukturtyp als Empfänger deklariert werden Integraler Bestandteil des Methodensatzes der Struktur. Sie ermöglichen die Implementierung von Schnittstellen und den Betrieb mit konkreten Typen. Einmal definiert, können Methoden zur Laufzeit nicht geändert werden.
Wann werden Felder vom Funktionstyp verwendet?
Wann sollten echte Methoden verwendet werden?
Beispiel
<code class="go">type Foo struct { Bar func() } func main() { f := Foo{ Bar: func() { fmt.Println("initial") }, } f.Bar() f.Bar = func() { fmt.Println("changed") } f.Bar() }</code>
Ausgabe:
initial changed
In diesem Beispiel ist eine Funktion als Feld in die Foo-Struktur eingebettet. Indem wir das Feld zur Laufzeit neu zuweisen, können wir das Verhalten der Bar-Methode ändern und so die Flexibilität von Feldern vom Funktionstyp demonstrieren.
Das obige ist der detaillierte Inhalt vonFunktionen als Strukturfelder vs. Strukturmethoden: Wann sollte man welche in Go verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!