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