Maison > développement back-end > Golang > Comment analyser les fichiers YAML dans Go ?

Comment analyser les fichiers YAML dans Go ?

Linda Hamilton
Libérer: 2024-11-29 06:07:12
original
573 Les gens l'ont consulté

How do I Parse YAML Files in Go?

Analyse des fichiers YAML dans Go

L'analyse des fichiers YAML dans Go nécessite de comprendre la structure des données et les types de données appropriés pour les représenter.

Exemple : Analyse d'un fichier de règles réseau de pare-feu

Considérez le fichier YAML suivant avec un réseau de pare-feu règles :

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
Copier après la connexion

Pour analyser ce fichier, nous définirons une structure de configuration pour représenter le contenu YAML :

type Config struct {
    Firewall_network_rules map[string][]string
}
Copier après la connexion

Nous utiliserons ensuite le package yaml pour désorganiser le YAML fichier dans la structure Config :

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)
}
Copier après la connexion

Cette approche fonctionne car le fichier YAML utilise une structure de carte imbriquée qui correspond à la structure Config.

Exemple : Analyse d'un fichier YAML de service

Pour analyser un fichier YAML plus complexe comme un manifeste de service Kubernetes, nous allons créer une structure plus complexe :

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"`
}
Copier après la connexion

Nous allons ensuite désorganiser le fichier YAML dans ce struct :

var service Service

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

fmt.Print(service.Metadata.Name)
Copier après la connexion

En utilisant des structures appropriées qui correspondent à la structure YAML, nous pouvons analyser et représenter efficacement des données YAML complexes dans Go.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal