第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何遍歷 Golang 中的所有 YAML 值?

如何遍歷 Golang 中的所有 YAML 值?

Go
守著星空守著你 2022-01-04 21:18:50
我試圖理解 Golang 中的嵌套映射。我有一個(gè)像下面這樣的地圖,我如何遍歷所有的鍵?Data:  - name: "foo"    bar1: 0      k1: val1      k2:         val2         val3    bar2: 1      k3: val4      k4: val5      k3: val4      k4: val5
查看完整描述

1 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

您必須將數(shù)據(jù)解組到地圖中,(map[interface{}]interface{} 或者map[string]interface{})然后您必須檢查鍵值的類型。您可以使用該yaml.v2包,并且可能有更清晰的接口可以幫助檢測值的類型。否則檢查迭代鍵并打印值的示例:


package main


import (

    "fmt"

    "gopkg.in/yaml.v2"

    "reflect"

    "strings"

)


var data = `

Data:

    - name: "foo"

      bar1: 0

      k1: val1

      k2:

         val2

         val3

      bar2: 1

      k3: val4

      k4: val5

      k5: val5

      k6: val6

`


func printVal(v interface{}, depth int) {

    typ := reflect.TypeOf(v).Kind()

    if typ == reflect.Int || typ == reflect.String {

        fmt.Printf("%s%v\n", strings.Repeat(" ", depth), v)

    } else if typ == reflect.Slice {

        fmt.Printf("\n")

        printSlice(v.([]interface{}), depth+1)

    } else if typ == reflect.Map {

        fmt.Printf("\n")

        printMap(v.(map[interface{}]interface{}), depth+1)

    }


}


func printMap(m map[interface{}]interface{}, depth int) {

    for k, v := range m {

        fmt.Printf("%sKey:%s", strings.Repeat(" ", depth), k.(string))

        printVal(v, depth+1)

    }

}


func printSlice(slc []interface{}, depth int) {

    for _, v := range slc {

        printVal(v, depth+1)

    }

}


func main() {

    m := make(map[string]interface{})


    err := yaml.Unmarshal([]byte(data), &m)

    if err != nil {

        panic(err)

    }

    for k, v := range m {

        fmt.Printf("Key:%s ", k)

        printVal(v, 1)

    }

}


查看完整回答
反對 回復(fù) 2022-01-04
  • 1 回答
  • 0 關(guān)注
  • 346 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號