当前位置: 首页 > 面试题库 >

如何在Go中清除地图?

狄卓君
2023-03-14
问题内容

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


问题答案:

您可能应该只创建一个新地图。没有真正的理由去尝试清除现有的代码,除非同一段映射被多个代码引用,并且一个代码段明确需要清除值,以使此更改对其他代码可见。

是的,你可能应该说

mymap = make(map[keytype]valtype)

如果确实出于任何原因需要清除现有地图,这很简单:

for k := range m {
    delete(m, k)
}


 类似资料:
  • 问题内容: 在Go中清除切片的适当方法是什么? 这是我在go论坛中找到的内容: 这样对吗? 为了澄清起见,清除了缓冲区,以便可以重用它。 一个示例是bytes包中的Buffer.Truncate函数。 请注意,Reset只是调用Truncate(0)。因此看来,在这种情况下,第70行将评估:b.buf = b.buf [0:0] http://golang.org/src/pkg/bytes/bu

  • 问题内容: 在Golang中,您如何设置和清除整数的各个位?例如,行为如下: 问题答案: 这是一个设置功能。首先,将数字1移至整数中指定的空格数(这样它将变为0010、0100等)。然后将其与原始输入进行“或”运算。这使其他位不受影响,但始终将目标位设置为1。 这是一个清除功能。首先将数字1移至整数中指定的空格数(这样它将变为0010、0100等)。然后使用操作员翻转掩码中的每一位(因此0010变

  • 问题内容: 运行GO脚本时,Golang中是否有任何标准方法可以清除终端屏幕?还是我必须使用其他一些库? 问题答案: 注意: 运行命令以清除屏幕不是安全的方法。在这里也检查其他答案。 您必须为每个不同的OS定义一个清晰的方法,像这样。当用户的操作系统不受支持时,它会慌乱 (命令执行来自@merosss的答案)

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 问题内容: 我想用字符串键和struct值构建一个映射,通过它我可以更新由map key标识的映射中的struct值。 我已经尝试过了,这并没有给我想要的输出。 我真正想要的是: 问题答案: 您无法更改与地图中的键关联的值,只能重新分配值。 这给您2种可能性: 将指针存储在地图中,因此您可以修改 指向的 对象(不在地图数据结构内部)。 存储结构值,但是在修改它时,需要将其重新分配给键。 1.使用指

  • 我已经添加了片段活动地图,并使用addMarker函数添加了几个标记,但我能够删除所有标记,我收到了不同标记列表的通知, 现在我想删除所有标记并添加新标记。 一种将所有标记保留在列表中并逐个删除的方法,(marker.remove()) 有没有更好的方法清除所有标记。