Things I love about Golang
Having written software in a wide variety of programming languages over the past 30 years, I have to say that I’ve really been enjoying using in Go when building server-side or CLI applications.
Some of the things I love about it:
It’s a fairly simple language, providing a relatively compact toolbox with which you can accomplish a wide variety of things.
You can get really far by just using the standard library. It’s rare these days that I find myself genuinely needing to import some specific dependency. And anyways, a little copying is better than a little dependency in many cases.
Applications compile really quickly compared to other programming languages. If they’re built reasonably well, they run really quickly too.
Go’s dependency management approach of not having a centralized registry in which artifacts are stored, in my mind, potentially offers greater supply chain attack resiliency than other languages where the artifact in their registry need not match any code at any particular commit in a publicly accessible repository.
Its colorless concurrency model makes it really ergonomic to build concurrent systems.
The Go team’s conservative approach to backward-compatibility provides a really stable platform on which to build applications that could last a long time. This makes it a good candidate for building “enterprise software”.
It’s maintained by a pretty large company who seems to have a vested interest in its success. This gives me a degree of peace of mind that applications I build today could possibly still be compiled in 10 years’ time. This strengthens the case for its use in “enterprise software”, since such software can often exceed hundreds of thousands of lines of code and would be very expensive to rewrite.