go 讀取 yaml 文件

一、介紹

yaml 作爲配置文件,基本在 go 中,被認爲默認的配置文件格式了。
yaml 格式介紹,詳見 https://www.ruanyifeng.com/blog/2016/07/yaml.html

基本語法規則如下:

我們看下面的 yaml 文件,新建 redis.yaml 文件

---
users:
  - name: "hi"
     age: 1
  - name: "fff"
    age: 2
redis:
  base:
    addr: "test.redis.com:6379"
    password: "pwd"
    db: "1"
1、--- 是yaml文件的開頭 
2、- 是數組元素

熟悉 json,不熟悉 yaml 的人,可以轉一下 json,驗證一下數據的準確性。
通過在線 yaml 轉 json 格式 https://www.bejson.com/validators/yaml_editor/
可以看一下對應的 json 格式是

{
  "users": [
    {
      "name": "hi",
      "age": 1
    },
    {
      "name": "fff",
      "age": 2
    }
  ],
  "redis": {
    "base": {
      "addr": "test.redis.com:6379",
      "password": "pwd",
      "db": "1"
    }
  }
}

二、go 讀取 yaml 文件

我們使用 https://github.com/go-yaml/yaml 作爲讀取 yaml 的庫。

import (
    "gopkg.in/yaml.v3"
    "io/ioutil"
    "testing"
)

func TestYaml(t *testing.T) {
    //1讀取文件
    data, err := ioutil.ReadFile("redis.yaml")
    if err != nil {
        t.Log(err)
    }
    t.Log(string(data))
    //2解析文件
    var y YamlFile
    err = yaml.Unmarshal(data, &y)
    t.Log(y, err)
}

type YamlFile struct {
    Users []struct {
        Name string
        Age  int
    }
    Redis struct {
        Base struct {
            Addr     string
            Password string
            Db       string
        }
    }
}

輸出:

    ---
    users:
      - name: "hi"
        age: 1
      - name: "fff"
        age: 2
    redis:
      base:
        addr: "test.redis.com:6379"
        password: "pwd"
        db: "1"
   
    {[{hi 1} {fff 2}] {{test.redis.com:6379 pwd 1}}} <nil>
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/syBWxqlWBoPNBuowvaIbdQ