> most of these other languages have similar programming concepts as Go (except for concurrency) but add a few extra layers on top.
But that''s exactly what makes some of these languages that are just "layers on Go" so much more pleasant for newcomers. I don't have to think about arrays or slices, or initialising them and I don't have to write my own functions or iterate over a hash if all I want is to get the keys, or create a set or or or.
Go's great, I love it to bits, but for me if Go was my first programming language I would be a bit discouraged that after so many years I'd still have to write so many basic components myself. And sometimes that can be interesting and just the right challenge but when folks are just getting started it's maybe not the best thing to put in their way. Even if it's just a three line function, that convenience of having it in the standard library goes a long long way.
I don't know, I quite like the tradeoffs in Go between keeping the language small. A small language lets you learn it all very quickly, at the cost of having less stuff built in. This is definitely a tradeoff though and comes with downsides (having to iterate over values a bit more than you might in something like ruby). It's not complex to write a function if you really get keys from a map a lot:
but often if you want the keys you want to do something with them, so you'd want to iterate them anyway, I think this has come up just a few times for me. If you want a simple set that's easy, if you want a complex one it's not hard to write one yourself that does exactly what you need. This doesn't present much of a roadblock in real code, it's just slightly less convenient.