“Well-designed” involves making good tradeoffs where the upsides are useful and the downsides have manageable workarounds.
Go certainly has its fair share of these.
Go also has countless own-goals where a serious concession was made with zero or almost-zero upside. I won’t repeat them here.
You can like go and you can feel that go is a productive language. But given the sheer number of outright mistakes which should have been avoided in the early days of the language’s design and which are now frozen for all eternity, you can’t in good faith call it well-designed.
Go certainly has its fair share of these.
Go also has countless own-goals where a serious concession was made with zero or almost-zero upside. I won’t repeat them here.
You can like go and you can feel that go is a productive language. But given the sheer number of outright mistakes which should have been avoided in the early days of the language’s design and which are now frozen for all eternity, you can’t in good faith call it well-designed.