Heim >Backend-Entwicklung >Golang >Warum führt das Unmarshaling meiner YAML eine leere Struktur aus?
YAML in Struktur entmarshaling: Nicht exportierte Felder verstehen
In diesem Code versuchen Sie, ein YAML-Dokument in eine Konfigurationsstruktur zu analysieren. Die resultierende Konfigurationsstruktur bleibt jedoch leer, wie durch {} angezeigt. Dies liegt daran, dass Ihre Strukturfelder nicht exportiert sind.
Lösung: Strukturfelder exportieren
YAML Unmarshaling erfordert, dass die Strukturfelder exportiert werden (beginnend mit Großbuchstaben), damit es kann auf sie zugreifen und sie füllen. Hier ist der korrigierte Code:
type Config struct { FooBar string `yaml:"foo_bar"` }
Grundlegendes zu exportierten Feldern
In Go sind exportierte Felder außerhalb des Pakets zugänglich, in dem sie deklariert sind. Dies bedeutet, dass andere Pakete oder Code auf Felder zugreifen können, die mit Großbuchstaben beginnen. Umgekehrt sind nicht exportierte Felder (die mit Kleinbuchstaben beginnen) nur innerhalb desselben Pakets zugänglich.
Wenn YAML Unmarshaling durchgeführt wird, werden die exportierten Felder identifiziert und aus den YAML-Daten gefüllt. Da Ihre ursprünglichen Felder nicht exportiert wurden, konnte YAML Unmarshaling nicht darauf zugreifen und ließ sie leer.
Korrigierter Code
Nach der Aktualisierung der zu exportierenden Strukturfelder wurde der Code wird die YAML-Daten erfolgreich analysieren und die Konfigurationsstruktur füllen:
type Config struct { FooBar string `yaml:"foo_bar"` } func main() { config := ParseYAMLConfig([]byte(configYAMLData)) fmt.Printf("%v", config) // Outputs: {https://foo.bar} }
Das obige ist der detaillierte Inhalt vonWarum führt das Unmarshaling meiner YAML eine leere Struktur aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!