The Go language is 6 years old and has gotten a lot of traction. With the recent release of Go 1.7.1, the entire ecosystem looks very healthy. The continued focus on performance, while maintaining the original philosophy of simplicity, is encouraging. Go adoption is on the rise and Go is ideally suited for building micro-services that run on multi-core machines (often in containers). Its strong concurrency support allows taking advantage almost transparently of multiple cores. What are the indicators for Go’s success? Go is being used for many innovative distributed system projects like Etcd, Docker, Kubernetes, NSQ and InfluxDB.
Of course Go is used heavily inside Google. Python developers, in particular, flock to Go when they have to deal with performance issues. Another encouraging sign is the Go mobile project. The premise is that you can write both the backend and the mobile frontend for Android and iOS in Go. This is similar to Node.js where you use the same language to write the backend and the frontend.
One other important factor is the improvement in Go’s development environments. I’m a big fan of debuggers, and while Go advocates often say the Go is so simple you can just do Printf debugging, I prefer a real debugger for troubleshooting complex systems. The Delve debugger provides a solid debugging experience. It starts to get integrated in various Go IDEs and editors. If you are starting a new project, considering migrating incrementally to micro-services or just looking to expand your horizons, then Go should be on your radar as a nascent, yet well-supported language with a strong momentum.