Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 解组嵌套在列表中的YAML映射_Go_Yaml - Fatal编程技术网

Go 解组嵌套在列表中的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

我正在尝试为一个数据结构编写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)
}
返回

映射[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
,这样就不需要指定自定义名称