I think that's how interfaces work. You define an interface by the methods a receiver has (a struct complying to the ReadCloser interface for example must implement Read() and Close()). While one has to get used to it, it works very nicely in practice.
It means that one argument to the function is special, syntactically, and it is that argument (and only that argument) that determines whether a type implements an interface.