When I started using Go generics, they turned out to be completely useless for the use case I wanted to solve the most: functions to use in Go templates. Something is basic as <i>adding two numbers</i> is not solved by the core library and becomes a challenge with about a dozen numeric types. You can use a type switch and cast interface{}/any to float64 (which is a hack, but one that works in practice). What you can't do is use generics, because they require instantiation at compile time, which cannot happen in templates, because those are dynamic. Extremely disappointing.<p>Another disappointing thing is the fact that Go type inference is not good enough to have syntactically compact lambda functions. So now, even though it's possible to write code that does filter-map-reduce kind of stuff, it's verbose, slow to write and hard to read.