Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menghuraikan Fail YAML Kompleks dengan Berkesan dalam Go?

Bagaimana untuk Menghuraikan Fail YAML Kompleks dengan Berkesan dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-14 11:53:02
asal
631 orang telah melayarinya

How to Effectively Parse Complex YAML Files in Go?

Menghuraikan Fail YAML dengan Berkesan dalam Go

Memahami cara menghuraikan fail YAML dalam Go dengan tepat adalah penting untuk pelbagai aplikasi. Dengan menggunakan struktur Go yang jelas, seseorang boleh berinteraksi dengan data YAML dengan cekap.

Pernyataan Masalah

Dalam pertanyaan anda, anda menerangkan ketidakupayaan untuk menghuraikan fail YAML berikut menggunakan Go:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
Salin selepas log masuk

Selain itu, anda cuba menggunakan kod Go berikut:

type Config struct {
    Firewall_network_rules map[string][]string
}

...

err = yaml.Unmarshal(yamlFile, &config)
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini mengakibatkan ralat, mungkin disebabkan oleh kekurangan struktur yang sepadan untuk pasangan nilai kunci src dan dst.

Penyelesaian

Apabila fail YAML terdiri daripada senarai, pendekatan berikut akan mencukupi:

---
firewall_network_rules:
  rule1:
    - value1
    - value2
...
Salin selepas log masuk

Walau bagaimanapun, untuk struktur YAML yang lebih kompleks, seperti perkhidmatan sampel.yaml yang anda berikan:

apiVersion: v1
kind: Service
...
Salin selepas log masuk

Anda perlu menentukan struktur Go tersuai untuk memadankan struktur bersarang YAML. Contohnya:

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

Setelah struktur Go ditakrifkan, anda boleh menggunakan fungsi yaml.Unmarshal() untuk menghuraikan data YAML ke dalam struktur ini. Contohnya:

var service Service

err = yaml.Unmarshal(yourFile, &service)
Salin selepas log masuk

Dengan mengikuti teknik ini, anda boleh menghuraikan fail YAML dengan berkesan dan menggunakan data dalam aplikasi Go anda. Ingat untuk menyesuaikan struktur Go anda agar sepadan dengan struktur khusus fail YAML anda.

Atas ialah kandungan terperinci Bagaimana untuk Menghuraikan Fail YAML Kompleks dengan Berkesan 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan