Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 使用一次查找从映射中弹出一个值_Go - Fatal编程技术网

Go 使用一次查找从映射中弹出一个值

Go 使用一次查找从映射中弹出一个值,go,Go,如何在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) } 我选中了maybedelete返回已删除键的值: package main

如何在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)
}
我选中了maybe
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
功能,因此总是有两个操作,一个索引和一个
delete

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

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

Go没有地图的
Pop
功能,因此总是有两个操作,一个索引和一个
delete

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

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

Go没有地图的
Pop
功能,因此总是有两个操作,一个索引和一个
delete

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

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

Go没有地图的
Pop
功能,因此总是有两个操作,一个索引和一个
delete

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

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

“Pop”是堆栈/堆的典型操作。地图是无序的;设置,如果你愿意的话。改为使用。@tomwilde我的意思是
pop
,因为“pop”是堆栈/堆的典型操作。地图是无序的;设置,如果你愿意的话。改为使用。@tomwilde我的意思是
pop
,因为“pop”是堆栈/堆的典型操作。地图是无序的;设置,如果你愿意的话。改为使用。@tomwilde我的意思是
pop
,因为“pop”是堆栈/堆的典型操作。地图是无序的;设置,如果你愿意的话。改为使用。@tomwide我是说
pop
中的“将被内联”有参考吗?我想了解一下Go编译器是如何找到内联的候选对象的。你有“将被内联”的参考资料吗?我想了解一下Go编译器是如何找到内联的候选对象的。你有“将被内联”的参考资料吗?我想了解一下Go编译器是如何找到内联的候选对象的。你有“将被内联”的参考资料吗?我很想了解一下Go编译器是如何为内联找到候选对象的。