在 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 解析数据。
芜湖不芜
相关分类