Generics really reduced the sets of data structures you can’t implement yourself by a lot.
The language reserves syntax for itself; you can't overload a[b] to mean anything other than either array/slice indexing or indexing into a map. You have to write methods like ".Get" or something, there's no __getattr__ or anything.
It's not just types, either. Look at the signature for the built-in sort, which is amazingly cumbersome to use. A generic wrapper around it hides all the ugly.
It’s more what you must implement along with your new data structure to make it usable in the language that was the cry of the generics advocates.