Arrrgh. Go still lacks covariance/contravariance support. I knew you couldn't annotate generic types but built-in types can't express it either. No contravariance for interfaces/functions is genuinely insane. You can argue it's due to no real subtyping but still bad.