Roger Peppe, 2018-09-01
One common response to the new generics design has been that contracts seem a bit too much like interfaces but not the same.
They are indeed very similar if you squint a little. Consider these two definitions:
type IReader interface {
Read([]byte)(int, error)