gpt4 book ai didi

go - 使用一次查找从 map 中弹出一个值

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:11 26 4
gpt4 key购买 nike

如何在 Go 中实现一个仅使用一次查找就从 map 中弹出键的函数?此版本在 map 上进行两次查找:

package main

import "fmt"

func main() {
m := map[string]int{"a":1, "b":2}
a, ok := m["a"]
if ok {
delete(m, "a")
}
fmt.Println(a, m)
}

我检查过 delete 可能会返回已删除键的值:

package main

func main() {
m := map[string]int{"a":1, "b":2}
println(delete(m, "a"))
}

但这行不通:

prog.go:5: delete(m, "a") used as value

最佳答案

Go 没有用于映射的 Pop 函数,因此总会有 2 个操作,一个索引和一个 delete

如果您担心冗长的性能,那么像这样的小辅助函数将被内联,因此使用它不会产生额外的运行时开销。

func pop(m map[string]int, key string) (int, bool) {
v, ok := m[key]
if ok {
delete(m, key)
}
return v, ok
}

关于go - 使用一次查找从 map 中弹出一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24496074/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com