The one about generics actually raises a question: if previous proposals for Go generics were deemed to high overhead, too complicated, not-goey-enough, but the standard library has generics in a few places, how did they implement them to avoid the problems of high overhead, too complicated, not-goey-enough?
Basically, by cheating. See here for example: the typechecking for append is handled manually. So really it’s handled in the quintessential Go way: a bunch of special cases rather than a general solution.
they’re super specialized cases that are hand rolled effectively; it is the bare minimum with generics you can do w/o bloating the runtime or making the compiler much slower.
It really is an exceptional language, I must admit.