Heim >Backend-Entwicklung >Golang >Warum führt das Unmarshaling meiner YAML eine leere Struktur aus?

Warum führt das Unmarshaling meiner YAML eine leere Struktur aus?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 02:24:08624Durchsuche

Why is my YAML unmarshaling to an empty struct?

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!

Stellungnahme:
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