我正在尝试读取类似于我在 Python 中所做的 YAML 文件。但我不知道如何使用任意键。我有以下我想阅读的 YAML:apple: name: item1banana: name: item2我知道如何读取文件,但只使用空接口。我想将其作为我的 Item 类型的映射来读入。package mainimport ( "fmt" "log" "gopkg.in/yaml.v2")type Item struct { Name string `yaml:"name"`}func main() { input := ` apple: name: item1 banana: name: item2` m := make(map[interface{}]interface{}) err := yaml.Unmarshal([]byte(input), &m) if err != nil { log.Fatalf("error: %v", err) } fmt.Printf("%v \n", m)}我在 Stdout 中得到了什么:map[apple:map[name:item1] banana:map[name:item2]]我想看到的是:map[apple:{item1} banana:{item2}] 如何将我的 YAML 文件读入 Item(s) 的映射中?
2 回答
浮云间
TA贡献1829条经验 获得超4个赞
为了按照您想要的方式解组,您应该提供说明。在您的情况下,如果您不想在地图中命名,请提供一个要解组的结构。
所以m := make(map[interface{}]interface{})应该改成m := make(map[string]Item)
package main
import (
"fmt"
"log"
"gopkg.in/yaml.v2"
)
type Item struct {
Name string `yaml:"name"`
}
func main() {
input := `
apple:
name: item1
banana:
name: item2`
m := make(map[string]Item)
err := yaml.Unmarshal([]byte(input), &m)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("%v \n", m)
}
输出:map[apple:{item1} banana:{item2}]
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报
0/150
提交
取消