3 回答

TA貢獻1810條經驗 獲得超5個贊
很奇怪的是,
package main
func main () {
var sessions = map[string] chan int{};
delete(sessions, "moo");
}
似乎有效。不過,這似乎對資源的使用很差!
另一種方法是檢查是否存在并使用值本身:
package main
func main () {
var sessions = map[string] chan int{};
sessions["moo"] = make (chan int);
_, ok := sessions["moo"];
if ok {
delete(sessions, "moo");
}
}

TA貢獻1783條經驗 獲得超4個贊
從Go 1發行說明復制
在舊的語言中,k
要從所代表的地圖中刪除帶有鍵的條目m
,請寫下該語句,
m[k] = value, false
此語法是一種特殊的特殊情況,唯一的二對一分配。它要求傳遞一個被評估但被丟棄的值(通常被忽略),以及一個幾乎總是常量false的布爾值。它完成了工作,但很奇怪,也是爭論的焦點。
在Go 1中,語法已經消失了。而是有一個新的內置函數delete
。通話
delete(m, k)
將刪除由表達式檢索的地圖條目m[k]
。沒有返回值。刪除不存在的條目是無操作。
更新:跑步go fix
會的形式表達轉換m[k] = value, false
成delete(m, k)
時顯然被忽略的值可以從程序被安全地丟棄,false
是指預定義的布爾常數。該修復工具將標記該語法的其他用途,以供程序員檢查。

TA貢獻1863條經驗 獲得超2個贊
從有效出發:
要刪除地圖條目,請使用delete內置函數,該函數的自變量是地圖和要刪除的鍵。即使地圖上已經沒有鑰匙,也可以這樣做。
delete(timeZone, "PDT") // Now on Standard Time
- 3 回答
- 0 關注
- 289 瀏覽
添加回答
舉報