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 }
Versuch Initialisieren Sie einen ErrorValue mit der Syntax:
e := ErrorValue{Name: "alpha", Value: 123, Error: err}
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}
Alternativ können Sie die Feldnamen aus dem zusammengesetzten Literal weglassen:
e := ErrorValue{NamedValue{"fine", 33}, err}
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) }
Ausgabe:
{NamedValue:{Name:alpha Value:123} Error:some error}
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!