如何在Golang中从map中删除一个键?
要从map中删除一个键,我们可以使用Go内置的delete()函数。需要注意的是,当我们从map中删除一个键时,其对应的值也会被删除,因为键值对在Go中被视为一个单独的实体, Go中的map 。
语法
delete函数的语法如下所示。
delete(map,key)
一旦我们以上述格式调用函数,那么地图中的键将被删除。
现在,让我们在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的映射,其中包含一些字符串作为键,一些整数值作为这些键的值。稍后,我们使用delete()函数从映射中删除名为”deepak”的键,然后再次打印映射的内容。
如果我们使用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的情况是我们无法确定一个特定的键是否存在于映射中。
示例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]