Go doesn't have non-blocking receives anymore.
value, ok := <- ch
will block, always. Iff the channel is closed, ok will be false, allowing you to distinguish between a zero value sent on the channel, and the zero value you get back if you try to receive on a closed channel. Receiving from a nil channel always blocks.Select statements allow you to check if a channel has had a value sent on it.
http://golang.org/ref/spec#Receive_operator
https://groups.google.com/d/msg/golang-nuts/Z63l4LDOlsI/54uT...