gpt4 book ai didi

go - 带有可选 bool 值的未命名字符串的 YAML 列表

转载 作者:IT王子 更新时间:2023-10-29 01:47:31 34 4
gpt4 key购买 nike

我想定义默认情况下定义字符串列表的 YAML。我不希望这个字符串列表是一个命名属性。我还想要一个可选的 bool 参数。如

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 没有 bool 值,我可以这样做

 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)
}

最佳答案

问题

  • 在不使用映射键的情况下定义 YAML 序列。

解决方案

  • 将 BEFORE 变为 AFTER

之前

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

thing2:
- g1
- g2
`

之后

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

thing2:
- g1
- g2
`

陷阱

  • 这种方法不可取,因为它使用 YAML 序列来存储两种不同类型的数据(组和 bool 值)。
  • 另一个答案(后来被删除)建议使用组 key ,这是一个很好的建议。

关于go - 带有可选 bool 值的未命名字符串的 YAML 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43835778/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com