我正在尝试为数据结构编写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%vnn", t)
}
返回
map [thing1:{[] 0}]
我如何使thick1成为字符串列表?
将您的类型更改为此
type ThingAndGroups struct {
Groups []string `yaml:"Groups"`
Value int `yaml:"Value"`
}
在https://godoc.org/gopkg.in/yaml.v2#marshal的文档中
结构字段仅在导出(具有大写字母的上字母(时被取消分组,并且使用字段名称下降为默认键,并使用字段名称删除。可以通过字段标签中的" yaml"名称来定义自定义键
另外,您可以更改YAML输入以使用value
之类的小写字段,然后您无需指定自定义名称。