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

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

如何將golang中的接口列表連接成一張大地圖?

如何將golang中的接口列表連接成一張大地圖?

Go
桃花長相依 2022-06-01 11:24:27
在 go 中處理數據時遇到了令人沮喪的問題。我有一個接口列表[SUSPENDED_PROCESS][MITRE_T1055_PROCESS_INJECT MODIFY_PROCESS]<nil><nil>[ENUMERATE_PROCESSES MITRE_T1057_PROCESS_DISCOVERY][MODIFY_MEMORY_PROTECTION]<nil>[SUSPENDED_PROCESS][MODIFY_MEMORY_PROTECTION]<nil>[SUSPENDED_PROCESS]<nil>[MODIFY_MEMORY_PROTECTION]<nil><nil>[SUSPENDED_PROCESS][MITRE_T1055_PROCESS_INJECT MODIFY_PROCESS]我想將這個 []interface{} 合并到一個 interface{} 中,不包括 nil 值和去重。到目前為止,這是我的代碼。for _, event := range results.([]interface{}) {            if tid, found := event.(map[string]interface{})["threatIndicators"]; found {                fmt.Println(tid) //these are the interfaces i want to merge                if tid != nil { //concatenate all non null tids                    for k, v := range tid.([]interface{}) { //iterate through each tid                        tidList[k] = v                        // fmt.Println(tidList)                    }                }            }}我遇到的問題是這些映射具有非唯一鍵(鍵是映射中的索引)。因此,如果鍵相同,我的代碼將覆蓋,這將在這種情況下發生。有沒有辦法做到這一點?在 python 中,這將是一個簡單的列表理解,但我正在努力了解如何在 Go 中完成此操作。最終結果將是一張理想情況下包含所有這些值的地圖。不幸的是,我無法控制這種結構,我正在從 api 解析數據。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

如果您有多個具有相同鍵的條目并且您不想丟失數據,那么您可以將數據存儲在切片映射中:

map[string][]interface{}

然后,您將為每個鍵附加而不是覆蓋:

tidList[k] = append(tidlist[k], v)

另一種選擇可能是在threatIndicators 中找到一個唯一值,例如id,并將其用作鍵。


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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