YAML-Dateien effektiv in Go analysieren
Für verschiedene Anwendungen ist es von entscheidender Bedeutung, zu verstehen, wie YAML-Dateien in Go genau analysiert werden. Durch die Verwendung wohldefinierter Go-Strukturen kann man effizient mit YAML-Daten interagieren.
Problemstellung
In Ihrer Anfrage haben Sie beschrieben, dass die folgende YAML-Datei nicht analysiert werden konnte mit Go:
--- firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname ...
Darüber hinaus haben Sie versucht, den folgenden Go-Code zu verwenden:
type Config struct { Firewall_network_rules map[string][]string } ... err = yaml.Unmarshal(yamlFile, &config)
Dieser Ansatz führte jedoch zu einem Fehler, möglicherweise aufgrund des Fehlens entsprechender Strukturen für die Schlüssel-Wert-Paare src und dst.
Lösung
Wenn die YAML-Datei aus Listen besteht, reicht der folgende Ansatz aus:
--- firewall_network_rules: rule1: - value1 - value2 ...
Für komplexere YAML-Strukturen wie das von Ihnen bereitgestellte Beispiel service.yaml gilt jedoch Folgendes:
apiVersion: v1 kind: Service ...
Sie müssen benutzerdefinierte Go-Strukturen definieren, die der verschachtelten Struktur der YAML entsprechen. Zum Beispiel:
type Service struct { APIVersion string `yaml:"apiVersion"` Kind string `yaml:"kind"` Metadata struct { Name string `yaml:"name"` Namespace string `yaml:"namespace"` Labels struct { RouterDeisIoRoutable string `yaml:"router.deis.io/routable"` } `yaml:"labels"` Annotations struct { RouterDeisIoDomains string `yaml:"router.deis.io/domains"` } `yaml:"annotations"` } `yaml:"metadata"` Spec struct { Type string `yaml:"type"` Selector struct { App string `yaml:"app"` } `yaml:"selector"` Ports []struct { Name string `yaml:"name"` Port int `yaml:"port"` TargetPort int `yaml:"targetPort"` NodePort int `yaml:"nodePort,omitempty"` } `yaml:"ports"` } `yaml:"spec"` }
Sobald die Go-Strukturen definiert sind, können Sie die Funktion yaml.Unmarshal() verwenden, um die YAML-Daten in diese Strukturen zu analysieren. Zum Beispiel:
var service Service err = yaml.Unmarshal(yourFile, &service)
Durch Befolgen dieser Techniken können Sie YAML-Dateien effektiv analysieren und die Daten in Ihren Go-Anwendungen nutzen. Denken Sie daran, Ihre Go-Strukturen an die spezifische Struktur Ihrer YAML-Dateien anzupassen.
Das obige ist der detaillierte Inhalt vonWie kann man komplexe YAML-Dateien in Go effektiv analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!