Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah cara saya Menghuraikan Fail YAML dalam Go?

Bagaimanakah cara saya Menghuraikan Fail YAML dalam Go?

Linda Hamilton
Lepaskan: 2024-11-29 06:07:12
asal
573 orang telah melayarinya

How do I Parse YAML Files in Go?

Menghuraikan Fail YAML dalam Go

Menghuraikan fail YAML dalam Go memerlukan pemahaman struktur data dan jenis data yang sesuai untuk mewakilinya.

Contoh: Menghuraikan Fail Peraturan Rangkaian Firewall

Pertimbangkan fail YAML berikut dengan rangkaian firewall peraturan:

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

Untuk menghuraikan fail ini, kami akan mentakrifkan struct Config untuk mewakili kandungan YAML:

type Config struct {
    Firewall_network_rules map[string][]string
}
Salin selepas log masuk

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

Pendekatan ini berfungsi kerana fail YAML menggunakan struktur peta bersarang yang sepadan dengan struct Config.

Contoh: Menghuraikan Fail YAML Perkhidmatan

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

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

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!

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