Whenever we are working with heap memory, we as programmer are responsible for managing memory. Managing heap memory has traditionally been difficult task. This is the case with traditional programming languages like C,C++.
Microsoft: 70 percent of all security bugs are memory safety issues - ZDNet
Since memory management has been tedious tasks, various programming languages have evolved to provide these features. C#, Java, Python all provides memory management as a feature so that programmer has no longer to worry about memory management.
The feature of language to manage memory for programmer is called Garbage collection. Garbage collection can be thought as a side running program that manages heap allocation and de-allocation.
Garbage Collection In Go : Part I - Semantics
Garbage Collection In Go : Part II - GC Traces
Garbage Collection In Go : Part III - GC Pacing
Getting to Go: The Journey of Go's Garbage Collector - The Go Programming Language
How to be sympathetic with the Go garbage collector, regardless of the current implementation or how it changes in the future
Golang UK Conference 2017 | Will Sewell & Jim Fisher - Golang's Realtime GC in Theory and Practice