1 回答

TA貢獻1851條經(jīng)驗 獲得超3個贊
但是 yaml.Unmarshal() 只解析第一段,我該如何解析剩下的部分呢?
yaml.Unmarshal
的醫(yī)生說(強調(diào)我的):
Unmarshal 解碼在 in 字節(jié)切片中找到的第一個文檔,并將解碼后的值分配給 out 值。
如果要解碼一系列文檔,請調(diào)用yaml.NewDecoder()
數(shù)據(jù)流,然后.Decode(...)
多次調(diào)用解碼器。用于io.EOF
標識記錄的結(jié)尾。
for
我通常為此使用帶有break
條件的無限循環(huán):
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 關(guān)注
- 140 瀏覽
添加回答
舉報