小编典典

如何清除 Go 中的map?

go

我正在为.clear() 原始类型寻找类似 c++ 函数的东西map

或者我应该只创建一个新地图?

更新:感谢您的回答。通过查看答案,我刚刚意识到有时创建新地图可能会导致一些我们不想要的不一致。考虑以下示例:

var a map[string]string
var b map[string]string

func main() {
    a = make(map[string]string)
    b=a
    a["hello"]="world"
    a = nil
    fmt.Println(b["hello"])
}

我的意思是,这.clear()和c++中的函数还是有区别的,它会清除对象中的内容。


阅读 377

收藏
2021-12-02

共1个答案

小编典典

您可能应该创建一个新地图。没有真正的理由去尝试清除现有的地图,除非多段代码引用了同一个地图,并且其中一段明确需要清除值,以便此更改对其他代码段可见。

所以是的,你应该说

mymap = make(map[keytype]valtype)

如果您出于某种原因确实需要清除现有地图,这很简单:

for k := range m {
    delete(m, k)
}
2021-12-02