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.
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 ...
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 }
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) }
Cette approche fonctionne car le fichier YAML utilise une structure de carte imbriquée qui correspond à la structure Config.
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"` }
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)
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!