Menghuraikan fail YAML dalam Go memerlukan pemahaman struktur data dan jenis data yang sesuai untuk mewakilinya.
Pertimbangkan fail YAML berikut dengan rangkaian firewall peraturan:
--- firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname ...
Untuk menghuraikan fail ini, kami akan mentakrifkan struct Config untuk mewakili kandungan YAML:
type Config struct { Firewall_network_rules map[string][]string }
Kami kemudian akan menggunakan pakej yaml untuk menyahmarshal YAML fail ke dalam struct 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) }
Pendekatan ini berfungsi kerana fail YAML menggunakan struktur peta bersarang yang sepadan dengan struct Config.
Untuk menghuraikan fail YAML yang lebih kompleks seperti manifes perkhidmatan Kubernetes, kami akan mencipta struct yang lebih kompleks:
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"` }
Kami kemudiannya akan membongkar fail YAML ke dalam ini struct:
var service Service err = yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) } fmt.Print(service.Metadata.Name)
Dengan menggunakan struct yang sesuai yang sepadan dengan struktur YAML, kami boleh menghuraikan dan mewakili data YAML kompleks dengan berkesan dalam Go.
Atas ialah kandungan terperinci Bagaimanakah cara saya Menghuraikan Fail YAML dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!