我开始学习 Go,并发现了一些我无法找到的信息。
例如,如果我正在制作自己的列表结构
type elem struct {
prev *elem
next *elem
value string
}
并向其中添加新元素
Current.next = &elem{}
我该如何去除它们?我的意思是,如何从内存中删除 elem 数据,而不仅仅是从列表中删除?
Go 有垃圾收集功能。它将扫描没有指针的数据并将其从堆中删除(垃圾收集器在您的程序旁边运行)。你唯一应该做的就是:
Current.next = nil
在删除指向它的所有指针后,您的
elem{}
最终将从内存中删除(这不是确定性的。无法准确判断 elem{}
何时会被释放)。垃圾收集有不同的实现方式; Go 的实现可能随时改变。
如果
Current
超出范围,您甚至不需要将 next
设置为 nil
。