><i>Generics is the single biggest language feature absent in Go. It’s often missed by newcomers to Go. But it’s more of a type-system mechanism. It’s unclear if it’s an essential language feature.</i><p>Oh, it's clear by now. Though "essential" is a weasel word -- in a way nothing is essential in the sense you can do it all with assembler too.<p>><i>Generics are incredibly complex in both semantics and implementation. There are considerable trade-offs to consider, such as do you want a larger binary vs. slower binary vs. larger source code.</i><p>Unless I use them, I get none of those downsides. And when I need them, I now have to implement support for my types manually, which results in larger source code anyway.<p>And "larger source code" hasn't been a problem since 1980.<p>><i>Language features without competition: goroutines, interfaces, defer (now in Swift)</i><p>Those have been around in several other languages... Hardly "without competition".<p>><i>Tools without competition: fast compiler</i><p>It's fast because it's not doing much. And there are several compilers that are fast too.
The thing about Go is that there isn't all that much to talk about, any mention of it induces a "channels are awesome" comment or a "there's no generics :'(" conversational nadir.<p>I think eventually it'll be complete, with only the occasional maintenance patch.