为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕尼黑5688855 2021-09-27 15:39:32
我对 Golang 相当陌生,请原谅我的新手。我目前正在使用 yaml.v2 包 ( https://github.com/go-yaml/yaml ) 将 YAML 数据解组为结构体。考虑以下示例代码:package mainimport (  "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 循环,循环遍历数据变量并将所有出现的事件编组到单独的容器结构中。我怎么能做到这一点?
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

一个简单的改变来完成你想要的事情是将数据yaml放在一个数组中的项目中,然后解组到一个切片中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}}]



查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 369 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信