gpt4 book ai didi

map - 在 Go 中清除具有指针值的映射

转载 作者:数据小太阳 更新时间:2023-10-29 03:07:42 25 4
gpt4 key购买 nike

我有一个 map[string]*list.List 并且每个列表节点也是一个指针。通过简单地将 map 清除为 nil,所有 map 和列表以及所有这些指针是否都会被清除并收集垃圾并准备好再次使用?

type UnrolledGroup struct {                                                                                                                                          
next int
s []uint32
}

var dictionary = struct {
m map[string]*list.List
keys []string
}{m: make(map[string]*list.List)}

l := list.New()
newGroup := UnrolledGroup{next: 1, s: make([]uint32, groupLen)}
newGroup.s[0] = pos
l.PushBack(&newGroup)
dictionary.m[token] = l

现在这一切都清楚了吗?

 dictionary.m = nil

最佳答案

这取决于:如果一切不再“可达”,则所有内容都将被 GC 处理。如果您保留对您在 map 中存储的内容的其他引用,则不会收集它。如果 map 是这些对象的唯一根,它们将被收集。 (不要想太多这些东西。)

关于map - 在 Go 中清除具有指针值的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658202/

25 4 0
文章推荐: reflection - 在 go 反射包中,调用 Value.Kind() 是 Value.Type().Kind() 的语法糖吗?
文章推荐: javascript - 在 require.js data-main 上过期缓存
文章推荐: javascript - 如何根据 JavaScript 中的值禁用