I like Go. I use it for a number of things (including this blog, at the time of writing). Go is useful. With that said, Go is not a good language. It’s not bad; it’s just not good.
We have to be careful using languages that aren’t good, because if we’re not careful, we might end up stuck using them for the next 20 years.
This is a list of my chief complaints about Go. Some of these are mentioned frequently, and some are rarely discussed.
I’ve also included some comparisons to both Rust and Haskell (which I consider to be good languages). This is to show that all the problems listed here have already been solved.