小编sie*_*rts的帖子

我是否需要将地图设置为nil才能进行垃圾回收?

假设我有一个简单的映射,字符串为keytype,自定义结构为valuetype.像这样:map[string]*struct

我用很多不同的值填充这个地图,很多这些值在一段时间后永远不会再使用.

所以我不确定golang垃圾收集器是否会为我清理我的地图,或者我需要自己做.然后我在另一个问题上遇到了这个答案:在范围循环中从Golang地图中删除选定的键是否安全?

这使得它看起来像垃圾收集器不会为我做,我唯一的解决方案是将我的地图设置为nil,如果我想时不时释放一些内存.

这是真的?或者还有另一种方法可以做到这一点而不会丢失地图中不是"非活动"的值吗?

garbage-collection memory-management go

4
推荐指数
1
解决办法
2363
查看次数

将带有参数的函数传递给time.AfterFunc

time.AfterFunc()接受持续时间和该持续时间到期时要执行的功能。但是该函数不能是接受参数的函数。

例如:无法传递以下功能:

func Foo (b *Bar) {}
Run Code Online (Sandbox Code Playgroud)

虽然,可以初始化一个新函数来调用上述函数,然后将其传递:

f := func() {
    Foo(somebar)
}
timer := time.AfterFunc(1*time.Second, f)
Run Code Online (Sandbox Code Playgroud)

真的应该这样吗?
为什么time.AfterFunc不接受任何接受参数的函数?
是否存在其他/更好的方法来做到这一点?

go

3
推荐指数
1
解决办法
1436
查看次数

标签 统计

go ×2

garbage-collection ×1

memory-management ×1