And no, I don't see code generation as a good thing. It's fragile and difficult to safely upgrade.
Of course someone could always prove me wrong by doing just that.
Golang is simple only for toy examples.
At scale Golang codebases are difficult to navigate, understand and test due to the repetitive repetition of repetitious repeats.
And the idea that at-the-time-viable alternative languages like Java, C++ or D are too slow for something as relatively lightly trafficked as the core Kubernetes controller codebase is just plain silly.
I've not found Go difficult to navigate because of repetition. Quite the reverse really - it's easy to reason about where everything comes from and (usually) easy to work out how everything connects together. I would take that any day over a large Java codebase with the usual obfuscations of dependency injection, or a Python or C++ codebase where somebody has tried to be "clever".
People have also written bad Golang and good Java.
The difference for me is: given the choice between good Java and good Golang, I'd take Java. I don't have acres of stuff in my damn way.
The problems C++ has have nothing to do with those things anyway.
Haskell has both generics and great error management, and it's not C++. Ditto for OcamL and any number of languages...