我有一个地图数组,如果它存在,我想从中删除一个元素,这由它的“键”确定。怎么做?我希望它不慢。保持顺序并不重要。myMaps = []map[string]interface{} { map[string]interface{} {"key": "aaa", "key2": 222, "key3": "aafdsafd"}, map[string]interface{} {"key": "key_to_delete", "key2": 366, "key3": "333aafdsafd"}, map[string]interface{} {"key": "cccc", "key2": 467, "key3": "jhgfjhg"}, }for _, x := range myMaps { if x["key"] == "key_to_delete" { //delete this element as a) key of the map b) the map-element as an element of the array; How? }}delete(...)功能:当迭代一个数组时,它的副本是在循环体中传递的。不?那么如何delete(...)从真实数组中删除一个元素?更新:我需要知道如何删除 2 类实体,就我而言:数组的一个元素 - 一张地图地图的一个元素,具有特定的键不使用第三方库。
1 回答

繁星淼淼
TA贡献1775条经验 获得超11个赞
如果要从地图中删除密钥:
for _, x := range myMaps {
if x["key"] == "key_to_delete" {
delete(x, "key")
}
}
如果你想要的是从数组中删除它变得复杂的地图,如果要保留当前地图,你最好创建第二个数组并插入其中:
myFilteredMaps := make([]map[string]interface{}, 0, len(myMaps))
for _, x := range myMaps {
if x["key"] != "key_to_delete" {
myFilteredMaps = append(myFilteredMaps, x)
}
}
myMaps = myFilteredMaps
只要len(myMaps)不是太大,这两者都非常快,两者都具有相对于该长度的线性运行时间。
- 1 回答
- 0 关注
- 83 浏览
添加回答
举报
0/150
提交
取消