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

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

遞歸遍歷任意數(shù)量的嵌套映射

遞歸遍歷任意數(shù)量的嵌套映射

Go
慕蓋茨4494581 2022-10-10 10:29:42
我有一個(gè) API,它返回任意數(shù)量的地圖,嵌套任意數(shù)量的深度。一個(gè)例子:data=map[a:map[first_seen:2021-10-20 values:[map[h:<nil> ip:142.250.188.206 ip_count:474360 ip_organization:Google LLC]]] aaaa:map[first_seen:2021-10-20 values:[map[h:<nil> ipv6:2607:f8b0:4004:836::200e ipv6_count:459302 ipv6_organization:<nil>]]] mx:map[first_seen:2021-08-04 values:[map[hostname:aspmx.l.google.com hostname_count:1.3895903e+07 hostname_organization:Google LLC priority:10] map[hostname:alt4.aspmx.l.google.com hostname_count:8.616356e+06 hostname_organization:Google LLC priority:50] map[hostname:alt3.aspmx.l.google.com hostname_count:8.676906e+06 hostname_organization:Google LLC priority:40] map[hostname:alt2.aspmx.l.google.com hostname_count:1.3572714e+07 hostname_organization:Google LLC priority:30]如何遞歸循環(huán)通過(guò)這樣的數(shù)據(jù)結(jié)構(gòu)?如何在最深層次獲得地圖的關(guān)鍵價(jià)值?
查看完整描述

2 回答

?
慕容森

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

像這樣的東西應(yīng)該對(duì)你有用——簡(jiǎn)單的深度優(yōu)先地圖步行者。它在每個(gè)葉子節(jié)點(diǎn)上調(diào)用你的回調(diào)函數(shù)visit()(“葉子”被定義為“不是地圖”),傳遞它

  • 包含路徑(指向項(xiàng)目的鍵)的切片/數(shù)組,

  • 項(xiàng)目的密鑰,以及

  • 物品的價(jià)值

type Visit func( path []interface{}, key interface{}, value interface{} )


func MapWalker( data map[interface{}]interface{}, visit Visit ) {

  traverse( data, []interface{}{}, visit )

}


func traverse( data map[interface{}]interface{}, path []interface{}, visit Visit ) {


  for key, value := range data {


    if child, isMap := value.(map[interface{}]interface{}); isMap {


      path = append( path, key )

      traverse( child, path, visit )

      path = path[:len(path)-1]


    } else {


      visit( path, key, child )


    }


  }


}

用法很簡(jiǎn)單:



func do_something_with_item( path []interface{}, key, value interface{} ) {

  // path is a slice of interface{} (the keys leading to the current object

  // key is the name of the current property (as an interface{})

  // value is the current value, agains as an interface{}

  //

  // Again it's up to you to cast these interface{} to something usable

}


MapWalker( someGenericMapOfGenericMaps, do_something_with_item )

每次在樹(shù)中遇到葉節(jié)點(diǎn)時(shí),do_something_with_item()都會(huì)調(diào)用您的函數(shù)。


查看完整回答
反對(duì) 回復(fù) 2022-10-10
?
喵喵時(shí)光機(jī)

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

如果是 JSON 響應(yīng),我有一個(gè)包:


package main


import (

   "fmt"

   "github.com/89z/parse/json"

)


var data = []byte(`

{

   "soa": {

      "values":[

         {"email_count":142373, "ttl":900}

      ]

   }

}

`)


func main() {

   var values []struct {

      Email_Count int

      TTL int

   }

   if err := json.UnmarshalArray(data, &values); err != nil {

      panic(err)

   }

   fmt.Printf("%+v\n", values) // [{Email_Count:142373 TTL:900}]

}

https://github.com/89z/parse


查看完整回答
反對(duì) 回復(fù) 2022-10-10
  • 2 回答
  • 0 關(guān)注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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