亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 435 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號