我正在使用https://github.com/go-yaml/yaml来解析 yaml 文件:type TestConfig struct { Test string `yaml:"test"`}yaml 文件:test: 123---test: 456但是 yaml.Unmarshal() 只解析第一段,我该如何解析剩下的部分呢?
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
但是 yaml.Unmarshal() 只解析第一段,我该如何解析剩下的部分呢?
yaml.Unmarshal
的医生说(强调我的):
Unmarshal 解码在 in 字节切片中找到的第一个文档,并将解码后的值分配给 out 值。
如果要解码一系列文档,请调用yaml.NewDecoder()
数据流,然后.Decode(...)
多次调用解码器。用于io.EOF
标识记录的结尾。
for
我通常为此使用带有break
条件的无限循环:
decoder := yaml.NewDecoder(bytes.NewBufferString(data))
for {
var d Doc
if err := decoder.Decode(&d); err != nil {
if err == io.EOF {
break
}
panic(fmt.Errorf("Document decode failed: %w", err))
}
fmt.Printf("%+v\n", d)
}
fmt.Printf("All documents decoded")
(https://go.dev/play/p/01xdzDN0qB7)
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消