我开始学习Go语言,但发现有些问题找不到相关信息。
例如,如果我要创建自己的列表结构
type elem struct {
prev *elem
next *elem
value string
}
使用以下方法向其中添加新元素
Current.next = &elem{}
我该如何删除它们?我指的是如何从内存中删除elem的数据,而不仅仅是从列表中删除?
我开始学习Go语言,但发现有些问题找不到相关信息。
例如,如果我要创建自己的列表结构
type elem struct {
prev *elem
next *elem
value string
}
使用以下方法向其中添加新元素
Current.next = &elem{}
Go语言有自带的垃圾回收机制。它会扫描没有指向它的指针的数据并从堆中移除它(垃圾收集器会在程序运行时一直运行)。你唯一需要做的就是:
Current.next = nil
移除所有指向elem{}
的指针后,您的elem{}
将最终从内存中删除(这不是确定性的。无法准确告知何时释放elem{}
)。垃圾收集有不同的实现方式;Go的实现随时可能会发生变化。
如果Current
超出范围,甚至不需要将next
设置为nil
。