回答

收藏

如何清除 Go 中的map?

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

我正在为.clear() 原始类型寻找相似  c   函数的东西map。$ J0 G) R  V- J3 P* X1 B
或者我应该只创建一个新地图?
5 O2 F& l7 X3 x& }8 t$ K更新:谢谢你的回答。通过查看答案,我刚刚意识到创建新地图有时会导致我们不想要的不一致。考虑以下示例:, L, d4 ?* P- X
    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"])}, J+ p% o% U% b! E; U, [! V; p
我的意思是,这.clear()和c  中的函数仍然不同,它将清除对象中的内容。! j5 |% {$ Y3 r2 ~% L
                                                               
! n4 E8 C4 L) z+ ?2 l    解决方案:                                                                $ X/ u& _+ _+ [! `, {  A( P; M
                                                                你可能应该创建一个新的地图。除非多个代码引用相同的地图,并且其中一个清楚地需要清除值,否则没有真正的理由试图清除现有的地图。
" T9 o* P7 n4 ~' g所以是的,你应该说
. R0 R6 {& W! S/ O) j4 C; J
    mymap = make(map[keytype]valtype)0 z  {: n& w  R" N0 o! ?4 B
由于某种原因,如果你真的需要清除现有的地图,这很简单:- `2 W- }7 v3 P! o
    for k := range m    delete(m,k)}) d% {, ]: Y1 E6 l9 A
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则