如何在Go語言中刪除map中的鍵?


要從map中刪除一個鍵,我們可以使用Go內建的delete()函式。需要注意的是,當我們從map中刪除一個鍵時,它的值也會被刪除,因為在Go的map中,鍵值對就像一個單一實體。

語法

下面顯示了delete函式的語法。

delete(map,key)

按照上述格式呼叫函式後,map中的鍵將被刪除。

現在,讓我們在Go程式碼中使用上述函式,並瞭解它的工作原理。

示例1

考慮以下程式碼

package main

import (
   "fmt"
)

func main() {
   m := make(map[string]int)
   m["mukul"] = 10
   m["mayank"] = 9
   m["deepak"] = 8

   fmt.Println(m)

   fmt.Println("Deleting the key named deepak from the map")

   delete(m, "deepak")

   fmt.Println(m)
}

在上面的程式碼中,我們有一個名為m的map,它包含一些字串作為鍵,一些整數作為這些鍵的值。稍後,我們使用delete()函式從map中刪除名為“deepak”的鍵,然後我們再次列印map的內容。

如果我們使用命令go run main.go執行上述程式碼,那麼我們將在終端中得到以下輸出。

輸出

map[mukul:10 mayank:9 deepak:8]
Deleting the key named deepak from the map
map[mukul:10 mayank:9]

上述程式碼在大多數示例中都能正常工作,但在一種情況下會引發panic。這種會導致panic的情況是,我們不確定特定鍵是否存在於map中。

示例2

為了確保我們編寫的程式碼不會引發panic,我們可以使用以下程式碼。

package main

import (
   "fmt"
)

func main() {
   m := make(map[string]int)
   m["mukul"] = 10
   m["mayank"] = 9
   m["deepak"] = 8

   fmt.Println(m)

   fmt.Println("Deleting the key named deepak from the map")

   if _, ok := m["deepak"]; ok {
      delete(m, "deepak")
   }

   fmt.Println(m)
}

上述方法更安全,建議使用它而不是第一種方法。

輸出

如果我們使用命令go run main.go執行上述程式碼,那麼我們將在終端中得到以下輸出。

map[mukul:10 mayank:9 deepak:8]
Deleting the key named deepak from the map
map[mukul:10 mayank:9]

更新於:2023年9月2日

60K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告