我正在为.clear() 原始类型寻找类似 c++ 函数的东西map。
.clear()
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++中的函数还是有区别的,它会清除对象中的内容。
您可能应该创建一个新地图。没有真正的理由去尝试清除现有的地图,除非多段代码引用了同一个地图,并且其中一段明确需要清除值,以便此更改对其他代码段可见。
所以是的,你应该说
mymap = make(map[keytype]valtype)
如果您出于某种原因确实需要清除现有地图,这很简单:
for k := range m { delete(m, k) }