Coroutines for Golang
stealthrocket.techCoroutines are make up for the difficulties of using go routines.
Coroutines can explicitly yield control to their callers and other coroutines and send and receive data across yield points.
https://github.com/stealthrocket/coroutine has the code and a basic sample.