我试图为数据结构编写YAML,这是一个int和一个字符串列表。但是我在获取数据结构和YAML字符串时遇到了麻烦。例如
package main
import (
"fmt"
"log"
yaml "gopkg.in/yaml.v2"
)
type ThingAndGroups struct {
Groups []string
Value int
}
var someStr = `
thing1:
Groups:
- g1
- g2
Value:
5
`
func main() {
t := make(map[string]ThingAndGroups)
err := yaml.Unmarshal([]byte(someStr), &t)
if err != nil {
log.Fatalf("error: %v", err)
}
fmt.Printf("--- t:\n%v\n\n", t)
}
返回
map [thing1:{[] 0}]
如何让thing1成为字符串列表?
答案 0 :(得分:2)
将您的类型更改为此
type ThingAndGroups struct {
Groups []string `yaml:"Groups"`
Value int `yaml:"Value"`
}
在https://godoc.org/gopkg.in/yaml.v2#Marshal的文档中,它说
结构字段仅在导出时具有解组(具有大写的第一个字母),并且使用字段名称小写作为默认键进行解组。可以通过" yaml"定义自定义键。字段标记中的名称
或者,您可以更改yaml输入以使用value
等小写字段,然后您就不需要指定自定义名称。