Können anonyme Strukturen in Go Methoden haben?

王林
Freigeben: 2024-02-08 20:54:03
nach vorne
812 Leute haben es durchsucht

Go 中匿名结构体可以有方法吗?

Frageninhalt

var anonymousStruct = &struct {
    Value int
    Test  func()
}{
    Test: func() {
        fmt.Println(anonymousStruct.Value)
    },
}
Nach dem Login kopieren

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.


Richtige Antwort


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()
Nach dem Login kopieren

Dies wird ausgegeben (versuchen Sie es auf Go Playground):

3
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!