This was something that I've been asking myself while migrating the backend system for TaskSnipe, from Javascript (Which i now realised was a bad idea cause it made me just want to get things working) to Go, initially I thought that Javascript was just the easiest way to go around it, I can just get features working without caring too much about the lower-level structure of backend.
But now I realise that a lot of complexity hides behind frameworks, which isn't exactly the best for developer growth, even though it is definitely a stepping stone in trying to understand the higher level works of how things are connected. However, I believe that in order to truly understanding what is happening, we have to dive deeper. To be fair, this isn't exactly a rant about Javascript being bad, it's more like Javascript provides frameworks which makes developer life easier, but as engineers, something that's quite important as well is the understanding of what's happening under the hood.
Stumbling into Go pretty much helped with that. At first, I kept searching for a Go equivalent framework, but over time I've come to realise that it's simply Go's (haha simplyGo) design philosophy. While Go does provide certain frameworks like Gin or Chi, it doesn't really feel like the language depends on them?
Instead of everything being "Magic" something built to work, I get to define the rules and structure, which is something I really enjoy. Everything doesn't feel as much like a Blackbox, and it started feeling like something I own. Also Go packages are amazing man.
All in all, I think the question to be asking is not "Why does Go not have a framework", but instead "How do I move from just getting features to work to understanding the architecture behind them?"