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

如何将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 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

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