YAML / GoLang Mix顶级地图二级可选Bool

时间:2017-05-08 01:31:48

标签: go yaml

我想定义默认定义字符串列表的YAML。我不希望这个字符串列表成为命名属性。我还想要一个可选的布尔参数。如在

package main

import (
    "fmt"
    "log"

    yaml "gopkg.in/yaml.v2"
)

type ThingAndGroups struct {
    Groups   []string
    boolval  boolean
}

var someStr = `
thing1:
  - g1
  - g2
  boolval:
    y

thing2:
  - g1
  - g2
`

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:{[g1,g2] true},thing2:{[g1,g2] false}]

这可能吗?

我不想将YAML定义为

var someStr = `
thing1:
  groups:
    - g1
    - g2
  boolval:
    y`

如果YAML没有boolval我可以做

 func main() {
    // NOTE THIS IS A MAP
    t := make(map[string][]string)

    err := yaml.Unmarshal([]byte(someStr), &t)
    if err != nil {
        log.Fatalf("error: %v", err)
    }
    fmt.Printf("--- t:\n%v\n\n", t)
}

0 个答案:

没有答案