回答

收藏

如何清除 Go 中的map?

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

我正在为.clear() 原始类型寻找相似  c   函数的东西map。! a- g$ s: h+ k
或者我应该只创建一个新地图?
6 S  l% x3 q" H, R- @9 E更新:谢谢你的回答。通过查看答案,我刚刚意识到创建新地图有时会导致我们不想要的不一致。考虑以下示例:$ m3 U* e& {( }: k4 u
    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"])}  U* a& P4 H3 P: R! J
我的意思是,这.clear()和c  中的函数仍然不同,它将清除对象中的内容。
) `) f- E2 _5 K/ g" y* x5 w. h) u                                                                ( w' N5 \  K2 x
    解决方案:                                                               
' p7 a0 o, o: A                                                                你可能应该创建一个新的地图。除非多个代码引用相同的地图,并且其中一个清楚地需要清除值,否则没有真正的理由试图清除现有的地图。1 V) w) }" c+ r6 i! t6 w8 m( [# Z
所以是的,你应该说" v/ d% U! e7 _; ^. i
    mymap = make(map[keytype]valtype)- @, x+ h; s. Y* Z; j
由于某种原因,如果你真的需要清除现有的地图,这很简单:) j& ]5 e- Z" H# ]. U' }& @
    for k := range m    delete(m,k)}
    ) r' k& F: }' Q4 L- ^+ p
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则