From Gopher Slack
I'm rough on the details but I think I can shed some light. When compiling for Linux, cgo is optional but desirable. So when you're building on Linux and have libc available, cgo will be enabled and the resulting binary will be dynamically linked to libc. When compiling for Darwin, linking to libSystem is mandatory -- there is no stable syscall interface, and so Go programs always have to link against libsystem or whatever it is. The runtime contains a copy of enough of the libsystem API that it can