Broadcast channels for Go! This is a lightweight implementation using just channels and no other synchronization
Making a channel:
b := make(broadcast.Broadcast)
Broadcasting a message:
b <- message // Combine with whatever select magic you'd like!
Receiving a message:
message := b.Receive()
More info: https://godoc.org/github.com/ericpauley/broadcast