▲ 8 ▼ Channels Are Not Enough
... or Why Pipelining Is Not That Easy Golang Concurrency Patterns for brave and smart by @kachayev
Go was designed for building concurrency applications easily so it has goroutines for running independent computations and channels to communicate with each other. We've all heard this story before. All examples and tutorials look just fine: we can create a new channel, we can send to a channel, we can read from a channel, we even have the nifty, elegant select statement (btw, why do we still have statements in 21th century?), blocking reads and buffers…
Register to comment or vote on this story
This is not a new article, and is pretty snarky in places - mostly the author seems to want to rewrite Go to support functional programming, but it is an interesting outside perspective on channels and their uses. In some cases a simple mutex is a lot simpler and less prone to bugs than a complex pipeline involving goroutines and channels, which can be intimidating and difficult to master for new programmers.
It is from a while ago but not much has changed. I do find channels a bit confusing to use though in theory they're simple.