Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menghuraikan Fail YAML dengan Pasangan Nilai Kunci Bersarang dalam Go?

Bagaimana untuk Menghuraikan Fail YAML dengan Pasangan Nilai Kunci Bersarang dalam Go?

DDD
DDDasal
2024-11-10 22:05:02323semak imbas

How to Parse a YAML File with Nested Key-Value Pairs in 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn