如何在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+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告