回答

收藏

如何清除 Go 中的map?

技术问答 技术问答 361 人阅读 | 0 人回复 | 2023-09-12

我正在为.clear() 原始类型寻找相似  c   函数的东西map。
) w! \9 j6 g$ H! w* k8 B1 e$ F或者我应该只创建一个新地图?
( y. s6 V$ g8 N: K$ i- J8 n& `更新:谢谢你的回答。通过查看答案,我刚刚意识到创建新地图有时会导致我们不想要的不一致。考虑以下示例:" U& D8 B& Q2 M; a8 e4 M( C
    var a map[string]stringvar b map[string]stringfunc main() {    a = make(map[string]string)    b=a    a["hello"]="world"    a = nil    fmt.Println(b["hello"])}1 }& v# ]; u  e3 v9 X0 ~
我的意思是,这.clear()和c  中的函数仍然不同,它将清除对象中的内容。
' P+ o& P& X5 v5 c                                                                + v) }' I' M$ b. \* j$ V8 w
    解决方案:                                                                5 S  u$ C( G9 i7 S  c1 X5 B
                                                                你可能应该创建一个新的地图。除非多个代码引用相同的地图,并且其中一个清楚地需要清除值,否则没有真正的理由试图清除现有的地图。3 P" L* R7 \- l8 W7 Q9 y# l
所以是的,你应该说
  ]0 o( t5 ?" |: e
    mymap = make(map[keytype]valtype)+ z& N5 h4 [6 I) ?& |
由于某种原因,如果你真的需要清除现有的地图,这很简单:- D: [: g+ A3 [1 X3 e
    for k := range m    delete(m,k)}2 i* |* T$ Q" N2 w3 S
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则