I've started to learn Go, and found something I'm not able to find information about.
For example, if I'm making my own list structure,
type elem struct {
prev *elem
next *elem
value string
}
And adding new elements to it with
Current.next = &elem{}
How should I remove them? I mean, how can I remove data of elem
from memory, not just from the list?
Go has garbage collection. It will scan for data that has no pointer to it and remove it from heap (Garbage collector is running beside your program). The only thing you should do is:
Current.next = nil
Your elem{}
will be removed from memory eventually after you remove all pointers to it (it's not deterministic. Can't tell exactly when elem{}
will be released). There are different implementations of garbage collection; Go's implementation may change at any time.
If Current
goes out of scope, you don't even need to set next
to nil
.