我有一個地圖陣列,如果存在,我想從中洗掉一個元素,這由它的“鍵”決定。
怎么做?我希望它不慢。保持順序并不重要。
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 種型別的物體,對于我的情況:
- 陣列的元素 - 地圖
- 地圖的一個元素,具有特定的鍵
不使用第三方庫。
uj5u.com熱心網友回復:
如果要從地圖中洗掉密鑰:
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)不是太大,這兩者都非常快,并且都具有相對于該長度的線性運行時間。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/338480.html
標籤:走
上一篇:如何回傳golang中的錯誤?
