First dip into Golang's concurrency

I have been toying with Google’s Go language lately. The native support for concurrent programming is one of Go’s major selling point. Go has low-level primitives for concurrent programming such as mutexes and atomic, but also provides high-level language constructs for building concurrent programs via goroutines and channels. Goroutines are functions executing in the same address space as other goroutines, like threads, but unlike threads, they communicate to each other via channels, not shared variables.