Heim > Backend-Entwicklung > Golang > Wie analysiere ich YAML-Dateien in Go?

Wie analysiere ich YAML-Dateien in Go?

Linda Hamilton
Freigeben: 2024-11-29 06:07:12
Original
573 Leute haben es durchsucht

How do I Parse YAML Files in Go?

YAML-Dateien in Go analysieren

Das Parsen von YAML-Dateien in Go erfordert ein Verständnis der Struktur der Daten und der geeigneten Datentypen für deren Darstellung.

Beispiel: Parsen einer Firewall-Netzwerkregeldatei

Betrachten Sie die folgende YAML-Datei mit Firewall-Netzwerk Regeln:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
Nach dem Login kopieren

Um diese Datei zu analysieren, definieren wir eine Konfigurationsstruktur, um den YAML-Inhalt darzustellen:

type Config struct {
    Firewall_network_rules map[string][]string
}
Nach dem Login kopieren

Wir verwenden dann das Yaml-Paket, um das YAML zu entmarshalieren Datei in die Config-Struktur:

func main() {
    filename, _ := filepath.Abs("./fruits.yml")
    yamlFile, err := ioutil.ReadFile(filename)

    if err != nil {
        panic(err)
    }

    var config Config

    err = yaml.Unmarshal(yamlFile, &config)
    if err != nil {
        panic(err)
    }

    fmt.Printf("Value: %#v\n", config.Firewall_network_rules)
}
Nach dem Login kopieren

Dieser Ansatz funktioniert, weil die YAML-Datei eine entsprechende verschachtelte Kartenstruktur verwendet zur Konfigurationsstruktur.

Beispiel: Parsen einer Dienst-YAML-Datei

Um eine komplexere YAML-Datei wie ein Kubernetes-Dienstmanifest zu analysieren, erstellen wir eine komplexere Struktur:

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"`
}
Nach dem Login kopieren

Wir werden dann die YAML-Datei hierhin entmarshalieren struct:

var service Service

err = yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}

fmt.Print(service.Metadata.Name)
Nach dem Login kopieren

Durch die Verwendung geeigneter Strukturen, die der YAML-Struktur entsprechen, können wir komplexe YAML-Daten in Go effektiv analysieren und darstellen.

Das obige ist der detaillierte Inhalt vonWie analysiere ich YAML-Dateien in Go?. 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