Wie funktionieren anonyme Felder in Go-Strukturen?

Linda Hamilton
Freigeben: 2024-11-14 22:22:02
Original
629 Leute haben es durchsucht

How do Anonymous Fields Work in Go Structs?

Anonyme Felder in Go-Strukturen

In Go können Strukturen anonyme Felder enthalten, also Felder ohne explizite Namen. Mit diesen Feldern können Sie eine andere Struktur oder einen anderen Typ in Ihre aktuelle Struktur einbetten und so auf die Felder des eingebetteten Typs zugreifen, ohne diese explizit aufzulisten.

Zweck anonymer Felder

Anonyme Felder dienen mehreren Zwecken:

  • Typeinbettung: Sie ermöglichen Ihnen, die Felder eines Typs in einen anderen einzubetten, wodurch Codeduplizierung reduziert wird und die Arbeit mit komplexen Daten einfacher wird Strukturen.
  • Promotion: Das erste anonyme Feld wird als „hochgestuftes Feld“ bezeichnet. Auf seine Felder kann direkt in der übergeordneten Struktur zugegriffen werden, da es sich so verhält, als wären diese Felder in der übergeordneten Struktur deklariert.

Zugriff auf anonyme Felder

Sie Sie können auf anonyme Felder auf die gleiche Weise zugreifen, wie Sie auf benannte Felder zugreifen würden. Auf das hochgestufte Feld kann direkt über den Feldnamen der übergeordneten Struktur zugegriffen werden. Auf andere anonyme Felder kann über den Feldnamen des eingebetteten Typs zugegriffen werden.

Beispiel

Betrachten Sie den folgenden Code:

package main

import "fmt"

type Widget struct {
    name string
}

type WrappedWidget struct {
    Widget  // Promoted field
    Time time.Time
    Price int64
}

func main() {
    widget := Widget{"my widget"}
    wrappedWidget := WrappedWidget{widget, time.Now(), 1234}

    fmt.Printf("Widget named %s, created at %s, has price %d\n",
        wrappedWidget.name,  // Accessing the promoted field
        wrappedWidget.Time,  // Accessing an anonymous field
        wrappedWidget.Price) // Accessing a normal field
}
Nach dem Login kopieren

Ausgabe:

Widget named my widget, created at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, has price 1234
Nach dem Login kopieren

In diesem Beispiel bettet WrappedWidget die Widget-Struktur ein und stuft ihr Namensfeld hoch. Dadurch können Sie direkt auf der WrappedWidget-Instanz auf das Namensfeld zugreifen.

Das obige ist der detaillierte Inhalt vonWie funktionieren anonyme Felder in Go-Strukturen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage