For those who haven't heard, a few weeks ago, Rich Hickey released core.async. A library for Communicating Sequential Processes in Clojure. Since this library was first released, I've heard many people ask "this is really cool, but how do these go blocks work?". Hopefully this article will shed a bit of light on the implementation of the go macro, and some of the thought processes behind their implementation.