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

DDD
Lepaskan: 2024-11-10 22:05:02
asal
327 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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"`
    }
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan