Anecdotally, I've seen it replace Java in quite a few small and medium sized established companies.
Go feels similar but younger. I love languages with big standard libraries. Just need their package management story to settle down for a while.
There's something wonderful about a language being so popular and around for so long that there's plenty of resources and answers on just about anything. I think that's a core part of what I'm missing from Go.
There are ways to deal with it, but it requires rigorous discipline, and resisting Python's dynamic siren call earlier on in the process.
Golang naturally guides you into a style of programming which scales. You're not fighting the language (or your own inclinations) to avoid getting entangled later on.
Everything has exceptions†, you can shoot yourself in the foot with anything, yes. But, reasonably, it's about the relative struggle to end up in a similar place. Which is higher for Golang initially, but higher for Python later on.
Not trying to turn this into a Python vs Go thread; they both have their place. But Python can definitely go wrong, in an area significant to many people.
† Except Go... T_T
I will say that asyncio is amazing and really solves concurrency for me. But Go looks like you also get parallelism without a lot of work.
Its beauty is that there is so little to it. You don’t need StackOverflow to discover/debug a clever way of expressing something because there is no clever way. It feels limiting until you learn the idioms.
Package management has indeed been extremely painful, particularly in the Glide era, but Dep and VGO are both solid.
At the company I used to work at it took nearly a 1000 lines to replace an 80 line bash script. So I can't help but laugh at this statement.
More LOC means more opportunities for error, and more resources needed to review that code and more time required for a new developer to get familiar with the code base.
That said if you have 85 LOC vs 1000 it usually means that the 85 LOC “app” used a metric ton of external dependencies which are on their own a good source for problems.
When comparing apples to apples (as in both apps use dependencies equally) I don’t see how such delta can be caused by using a different language, even using assembly would likely not cause this much inflation.