This has gotten some heated discussion elsewhere, but mostly on the really general, recurring debate about Go and generics, and related flamewars like whether Go’s designers are retrograde luddites or else wise pragmatists. The documents here are more interesting than that debate, which is why I think they’re worth linking. :)
Despite the title, it’s more of a documentation of four unsuccessful attempts work through how to add generics to go. The author would like to add generics to Go (and I believe still does), but in the four sub-documents linked at the end, each works out a different specific approach to making it work, and runs into various bits of trouble. Some of the details about how features interact and the difficulties that come up are interesting imo.