Analyse d'un fichier YAML dans Go
L'analyse des fichiers YAML dans Go implique l'utilisation de la bibliothèque YAML disponible via gopkg.in/yaml.v2. Le code fourni est conçu pour analyser un fichier YAML avec des paires clé-valeur imbriquées, comme suit :
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
Cependant, des problèmes surviennent lorsque vous tentez d'analyser des paires clé-valeur sans valeurs associées. La structure implémentée ne définit pas ces valeurs, ce qui entraîne une erreur lors de l'analyse.
Pour résoudre ce problème, envisagez d'incorporer un exemple YAML réel, tel qu'un service.yaml de Google Cloud ou Kubernetes :
apiVersion: v1 kind: Service metadata: name: myName namespace: default labels: router.deis.io/routable: "true" annotations: router.deis.io/domains: "" spec: type: NodePort selector: app: myName ports: - name: http port: 80 targetPort: 80 - name: https port: 443 targetPort: 443
Cet exemple illustre les relations clé-valeur imbriquées et fournit un cas d’utilisation pratique. La structure Go correspondante ressemblerait à :
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"` } Spec struct { Type string `yaml:"type"` Selector struct { App string `yaml:"app"` } Ports []struct { Name string `yaml:"name"` Port int `yaml:"port"` TargetPort int `yaml:"targetPort"` NodePort int `yaml:"nodePort,omitempty"` } `yaml:"ports"` } }
Pour simplifier le processus, des services comme yaml-to-go et json-to-go fournissent des outils pratiques pour convertir YAML en structures Go, rendant la tâche d'analyse plus gérable. .
Enfin, pour désorganiser le fichier YAML dans votre structure, vous pouvez utiliser le code suivant :
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
Cette approche permet d'accéder aux données analysées via la structure de service, vous permettant de interagissez avec les informations du fichier YAML dans votre application 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!