Heim > Backend-Entwicklung > Golang > Wie initialisiere ich eingebettete Strukturen in Go richtig?

Wie initialisiere ich eingebettete Strukturen in Go richtig?

Patricia Arquette
Freigeben: 2024-12-24 10:21:24
Original
580 Leute haben es durchsucht

How to Correctly Initialize Embedded Structs in Go?

In Golang eingebettete Strukturtypen: Syntax und Verwendung verstehen

Bei der Arbeit mit eingebetteten Strukturtypen in Go ist es wichtig, deren Syntax und zu verstehen ordnungsgemäße Verwendung. Dieser Artikel befasst sich mit dem Problem, dass eine eingebettete Struktur nicht initialisiert werden kann.

Problem:

Berücksichtigen Sie die folgenden Typen:

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}
Nach dem Login kopieren

Versuch Initialisieren Sie einen ErrorValue mit der Syntax:

e := ErrorValue{Name: "alpha", Value: 123, Error: err}
Nach dem Login kopieren

ergibt einen Fehler.

Lösung:

Eingebettete Typen, auch unbenannte Felder genannt, werden mit ihrem unqualifizierten Typnamen bezeichnet. Im bereitgestellten Code ist die Syntax zum Initialisieren des ErrorValue falsch.

Gemäß der Go-Sprachspezifikation sollte ein eingebettetes Feld mit dem Typnamen ohne Feldnamen initialisiert werden. Hier ist die richtige Syntax:

e := ErrorValue{NamedValue: NamedValue{Name: "fine", Value: 33}, Error: err}
Nach dem Login kopieren

Alternativ können Sie die Feldnamen aus dem zusammengesetzten Literal weglassen:

e := ErrorValue{NamedValue{"fine", 33}, err}
Nach dem Login kopieren

Beispiel:

package main

import "fmt"

type Value interface{}

type NamedValue struct {
    Name  string
    Value Value
}

type ErrorValue struct {
    NamedValue
    Error error
}

func main() {
    e := ErrorValue{NamedValue{Name: "alpha", Value: 123}, fmt.Errorf("some error")}
    fmt.Println(e)
}
Nach dem Login kopieren

Ausgabe:

{NamedValue:{Name:alpha Value:123} Error:some error}
Nach dem Login kopieren

Durch Verständnis der Syntax und Verwendung von Embedded Strukturtypen können Sie sie effektiv in Ihren Go-Programmen nutzen.

Das obige ist der detaillierte Inhalt vonWie initialisiere ich eingebettete Strukturen in Go richtig?. 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