gpt4 book ai didi

GoLang - 迭代数据以解码多个 YAML 结构

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:58 25 4
gpt4 key购买 nike

我是 Golang 的新手,请原谅我的新手。

我目前正在使用 yaml.v2 包 ( https://github.com/go-yaml/yaml ) 将 YAML 数据解码为结构。

考虑以下示例代码:

package main

import (
"fmt"
"gopkg.in/yaml.v2"
"log"
)

type Container struct {
First string
Second struct {
Nested1 string
Nested2 string
Nested3 string
Nested4 int
}
}

var data = `
first: first value
second:
nested1: GET
nested2: /bin/bash
nested3: /usr/local/bin/customscript
nested4: 8080

first: second value
second:
nested1: POST
nested2: /bin/ksh
nested3: /usr/local/bin/customscript2
nested4: 8081
`

func main() {

container := Container{}

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

}

结果:

---values found: {First:second value Second:{Nested1:POST Nested2:/bin/ksh Nested3:/usr/local/bin/customscript2 Nested4:8081}}

正如预期的那样,解码函数找到了一次 YAML 数据。

我想做的是编写一个简单的 while/each/for 循环,循环遍历数据变量并将所有出现的事件编码到单独的容器结构中。我怎样才能做到这一点?

最佳答案

一个简单的改变来完成你想要的是让 yaml 中的数据成为数组中的项目,然后 Unmarshal 到一片 Container

var data = `
- first: first value
second:
nested1: GET
nested2: /bin/bash
nested3: /usr/local/bin/customscript
nested4: 8080

- first: second value
second:
nested1: POST
nested2: /bin/ksh
nested3: /usr/local/bin/customscript2
nested4: 8081
`

func main() {

container := []Container{}

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

}

---values found:
[{First:first value Second:{Nested1:GET Nested2:/bin/bash Nested3:/usr/local/bin/customscript Nested4:8080}} {First:second value Second:{Nested1:POST Nested2:/bin/ksh Nested3:/usr/local/bin/customscript2 Nested4:8081}}]

关于GoLang - 迭代数据以解码多个 YAML 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29353542/

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