首頁 > 後端開發 > Golang > 如何在 Go 中解析 YAML 檔案?

如何在 Go 中解析 YAML 檔案?

Linda Hamilton
發布: 2024-11-29 06:07:12
原創
573 人瀏覽過

How do I Parse YAML Files in Go?

在 Go 中解析 YAML 檔案

在 Go 中解析 YAML 檔案需要了解資料的結構以及表示它的適當資料類型。

範例:解析防火牆網路規則文件

考慮以下帶有防火牆網路的YAML 檔案規則:

---
firewall_network_rules:
  rule1:
    src:       blablabla-host
    dst:       blabla-hostname
...
登入後複製

為了解析此文件,我們將定義一個Config 結構來表示YAML 內容:

type Config struct {
    Firewall_network_rules map[string][]string
}
登入後複製

然後我們將使用yaml 套件來解組YAML檔案到 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)
}
登入後複製

此方法之所以有效,是因為 YAML 檔案使用巢狀映射結構,對應於 Config 結構體。

範例:解析服務YAML 檔案

要解析更複雜的YAML 檔案(如Kubernetes 服務清單),我們將建立一個更複雜的結構體:

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"`
}
登入後複製

然後我們將YAML 檔案解組到此struct:

var service Service

err = yaml.Unmarshal(yourFile, &service)
if err != nil {
    panic(err)
}

fmt.Print(service.Metadata.Name)
登入後複製

透過使用與YAML結構匹配的適當結構體,我們可以在 Go 中有效地解析和表示複雜的 YAML 資料。

以上是如何在 Go 中解析 YAML 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板