- The tiny standard library and low learning curve make it quite easy to get started.
- Concurrency is a first class citizen, through goroutines and channels
- The performance, combined with the low barrier to entry, combined with its popularity make it very desirable for companies
In my experiences this means a lot of companies without deep concurrent programming experience begin to adopt it. In my experiences this means concurrent programming errors....literally EVERYWHERE. I've seen (and created these of course) in every company I've been at and in huge open source go projects.
I wish go would address this through first class tooling or type supported in the language like rust.
I have a hueristic based approach that I've had success with when writing and reviewing code, but writing a static analysis tool for it is a bit out of my experience:
https://medium.com/dm03514-tech-blog/golang-candidates-and-c...