It is known that go is garbage collected language and with a very efficient garbage collector.
How can that happen if go is compiled to machine code and has no run time environment that manages the memory deallocation?
A Go program is a collection of packages which are compiled and then linked together. One of these packages is runtime
which includes the Go garbage collector.