如何在Go中实现一个只使用一次查找从地图弹出一个键的功能?此版本在地图上执行两次查找:
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
答案 0 :(得分:0)
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
}