DevOpsCamp(第一期) 《cobra - 02 读取和保存配置文件(JSON/YAML)》
作业要求
- 使用 https://github.com/spf13/cobra 实现命令工具
命令具有以下参数
--config
,-c
配置文件
配置文件如下
# config.yml
name: zhangsan
age: 20
- 将配置文件保存为
JSON
格式
$ cat config.json
输出结果
{
"name":"zhangsan",
"age": 20
}
作业解析
json
和 yaml
是 最常用的 配置文件类型, 除此之外还有 ini, toml, xml
等。
解析方法 一般是
Marshal(v any) ([]byte, error)
将结构体 解析 成[]byte
类型。Unmarshal(data []byte, v any) error
将[]byte
映射 到结构体中。 这里的v
需要是 指针类型
另外, 不同的 解析库对应的的 方法名称 和 实现逻辑 也不尽相同, 使用的时候需要自己研究。
有些库, 在名字上可能具有一定变种,但也有迹可循。 比如
MarshalJSON
MarshalYAMl
常用的解析库
json
:encoding/json
yaml
:gopkg.in/yaml.v3
,gopkg.in/yaml.v2
v2 和 v3 有区别, 自己研究。
思考题?
- 为什么 json 第一次 Name 和 Age 是 大写字母 开头的?
- yaml, json 解析库的 解析逻辑顺序是什么 ?
- 怎么样忽略某个字段的解析?
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。