Fork me on GitHub

They're also good for normal concurrency, not just async. If you have a producer and a consumer and both are running concurrently channels are a good way to have the producer send what it's producing to the consumer while handling back-pressure, aka, slowing the producer down to just the speed at which the consumer can consume.