亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

要刪除地圖[關鍵字]嗎?

要刪除地圖[關鍵字]嗎?

Go
陪伴而非守候 2021-04-16 19:19:16
我有一張地圖:var sessions =  map[string] chan int{}如何刪除sessions[key]?我試過了:sessions[key] = nil,false;那沒用。更新(2011年11月):Go版本1中刪除了刪除映射條目的特殊語法:Go 1將刪除特殊的地圖分配,并引入一個新的內置函數delete:delete(m, x)將刪除由表達式檢索的地圖條目m[x]。...
查看完整描述

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");

    }

}


查看完整回答
反對 回復 2021-04-26
?
慕娘9325324

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, falsedelete(m, k)時顯然被忽略的值可以從程序被安全地丟棄,false是指預定義的布爾常數。該修復工具將標記該語法的其他用途,以供程序員檢查。


查看完整回答
反對 回復 2021-04-26
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

從有效出發:

要刪除地圖條目,請使用delete內置函數,該函數的自變量是地圖和要刪除的鍵。即使地圖上已經沒有鑰匙,也可以這樣做。

delete(timeZone, "PDT")  // Now on Standard Time


查看完整回答
反對 回復 2021-04-26
  • 3 回答
  • 0 關注
  • 289 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號