I love Golang and it’s been my main language for the past 5 years.
But it’s not the best. It has plenty of shortcomings, some which may be fixed soon but other with no end in sight.
No type inference of any kind, lots of missing language functionality (no search in maps, really?) that force lots of boilerplate. The error handling is an acquired taste. Personally I see advantages but some better consistency in a platform level wouldn’t hurt (panic stops execution across the board… except when it doesn’t)
Golang isn’t scalable by itself. You can’t infinitely dinamically accommodate workload (just try to load a 100M rows CSV with some reasonable processing to do per row – can you simply spawn a go routine for each row? You’re going to run out of memory – sorry but scalability isn’t just a matter for language, there are a number of factors to account here and to fully achieve it Go needs outside help)
If there ever was a platform close to perfect, that’s Erlang. That includes scalability as Erlang can scale across multiple machines by itself (well, it’s running platform) without the need for something like Kubernetes. It’s problem handling (won’t say error or exception, as it’s a bit different) is amazing. Developer experience, 1000% percent.