猿问

如何在Go中清除地图?

我正在寻找类似c ++函数.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 ++中的功能不同,后者将清除对象中的内容。


米琪卡哇伊
浏览 229回答 3
3回答

温温酱

您可能应该只创建一个新地图。没有真正的理由去尝试清除现有的代码,除非同一段映射被多个代码引用,并且一个代码段明确需要清除值,以便此更改对其他代码可见。是的,你可能应该说mymap = make(map[keytype]valtype)如果确实出于任何原因需要清除现有地图,这很简单:for k := range m {    delete(m, k)}
随时随地看视频慕课网APP

相关分类

Go
我要回答