var anonymousStruct = &struct { Value int Test func() }{ Test: func() { fmt.Println(anonymousStruct.Value) }, }
Beim Betrachten des Codes bin ich in Zeile 6 auf ein Problem gestoßen: Die Funktion „Test“ kann nicht auf den Parameter „Wert“ zugreifen. Gibt es eine Möglichkeit, einer Funktion Zugriff auf „Value“ zu gewähren, ohne ihn erneut als Parameter zu übergeben, ähnlich wie bei „anonymousStruct.Test(anonymousStruct.Value)“? Mit anderen Worten: Können anonyme Strukturen in Go Methoden anstelle von Funktionen haben? Danke für deine Beratung.
Sie können eine Methode nicht als anonyme Struktur deklarieren, da die Methodendeklaration nur benannte Typen (als Empfänger) enthalten kann.
Darüber hinaus können anonyme Strukturen Methoden haben, wenn sie in Typen eingebettet sind, die Methoden haben (sie werden hochgestuft).
In Ihrem Beispiel können Sie in einem zusammengesetzten Literal nicht auf eine anonymousStruct
Variable verweisen, da sich die Variable erst im Gültigkeitsbereich befindet, nachdem sie deklariert wurde (nach dem zusammengesetzten Literal). Siehe Spezifikation: Deklarationen und Bereiche ; Beispiel: Eine rekursive Funktion innerhalb einer Funktion definieren. Los geht's .
Zum Beispiel können Sie Funktionsfelder nach der Variablendeklaration initialisieren:
var anonymousStruct = &struct { Value int Test func() }{Value: 3} anonymousStruct.Test = func() { fmt.Println(anonymousStruct.Value) } anonymousStruct.Test()
Dies wird ausgegeben (versuchen Sie es auf Go Playground):
3
Das obige ist der detaillierte Inhalt vonKönnen anonyme Strukturen in Go Methoden haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!