> If you (and your team, if applicable) already know that set of languages, then there's no reason for you to learn Go.
Google is the perfect counter-example to your argument. C++, Java and Python were the 3 main programming languages in use at Google, and despite that, they designed Go and started using it instead of C++/Java/Python in some projects.
Go can be used instead of C++ when you need and can tolerate a garbage collector, and you don't need things like a custom memory allocator.
Go can be used instead of Java when you need a native executable, statically linked (like you wrote), when you need a better control over memory layout (especially to reduce pressure on the garbage collector), and when you need async IO without callbacks/promises/futures.
Re:Building Web Apps in Go
by FordPrefectAO on Monday March 28, 2016 @10:44PM
(#11379153)
Well one reason [1] Google made go was because of how many junior engineers they had who couldn't be trusted with java/python/etc. Instead of letting them struggle, they created go as a more simple and easy to use language.
[1]http://channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2014/Fro...
Indeed, if you already know Java, the only reason to learn Go would be if you had a burning need to produce self-contained statically linked binaries. For example, at my company, we have a habit of producing command-line clients for our services, and Go is a good choice for that.
Go has been most useful for people who know a dynamic language like Ruby or Python, but who are encountering problems where they need more performance, better concurrency, or stronger static guarantees. Go improves over dynamic languages in those respects, and it's pretty easy to learn, so it's a great addition to their toolbox.