Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menghuraikan Fail YAML dengan Pasangan Nilai Kunci Bersarang dalam Go?
Menghuraikan Fail YAML dalam Go
Menghuraikan fail YAML dalam Go melibatkan penggunaan pustaka YAML yang tersedia melalui gopkg.in/yaml.v2. Kod yang disediakan direka bentuk untuk menghuraikan fail YAML dengan pasangan nilai kunci bersarang, seperti berikut:
firewall_network_rules: rule1: src: blablabla-host dst: blabla-hostname
Walau bagaimanapun, isu timbul apabila cuba menghuraikan pasangan nilai kunci tanpa nilai yang disertakan. Struktur yang dilaksanakan tidak mentakrifkan nilai ini, yang membawa kepada ralat semasa penghuraian.
Untuk menangani isu ini, pertimbangkan untuk memasukkan contoh YAML dunia sebenar, seperti service.yaml daripada Google Cloud atau 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
Contoh ini menunjukkan perhubungan nilai kunci bersarang dan menyediakan kes penggunaan praktikal. Struktur Go yang sepadan akan menyerupai:
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"` } }
Untuk memudahkan proses, perkhidmatan seperti yaml-to-go dan json-to-go menyediakan alat yang mudah untuk menukar YAML kepada struct Go, menjadikan tugas penghuraian lebih mudah diurus .
Akhir sekali, untuk menyahmarshal fail YAML ke dalam struct anda, anda boleh menggunakan yang berikut kod:
var service Service err := yaml.Unmarshal(yourFile, &service) if err != nil { panic(err) }
Pendekatan ini membolehkan akses kepada data yang dihuraikan melalui struct perkhidmatan, membolehkan anda berinteraksi dengan maklumat fail YAML dalam aplikasi Go anda.
Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Fail YAML dengan Pasangan Nilai Kunci Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!