Go 解组嵌套在列表中的YAML映射
我正在尝试为一个数据结构编写YAML,它既是一个int,也是一个字符串列表。但是我很难让数据结构和YAML字符串匹配。乙二醇Go 解组嵌套在列表中的YAML映射,go,yaml,Go,Yaml,我正在尝试为一个数据结构编写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
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)
}
返回
映射[thing1:{[]0}]
如何使thing1成为字符串列表?将您的类型更改为此
type ThingAndGroups struct {
Groups []string `yaml:"Groups"`
Value int `yaml:"Value"`
}
医生说
只有在导出结构字段时(第一个字母大写),结构字段才会解组,并使用字段名小写作为默认键进行解组。自定义键可以通过字段标记中的“yaml”名称定义
或者,您可以将yaml输入更改为使用小写字段,如
value
,这样就不需要指定自定义名称。将您的类型更改为此
type ThingAndGroups struct {
Groups []string `yaml:"Groups"`
Value int `yaml:"Value"`
}
医生说
只有在导出结构字段时(第一个字母大写),结构字段才会解组,并使用字段名小写作为默认键进行解组。自定义键可以通过字段标记中的“yaml”名称定义
或者,您可以将yaml输入更改为使用小写字段,如value
,这样就不需要指定自定义名称