Methods on interface types

An interface defines a set of methods. A method contains the actual code. Inother words, an interface is the definition and the methods are theimplementation. So a receiver can not be an interface type, doing so results ina “invalid receiver type …” compiler error. The authoritative word from thelanguage spec [go_spec]:

The receiver type must be of the form T or *T where T is a type name. Tis called the receiver base type or just base type. The base type must not bea pointer or interface type and must be declared in the same package as themethod.

Creating a pointer to an interface value is a useless action in Go. It is infact illegal to create a pointer to an interface value. The release notes for anearlier Go release that made them illegal leave no room for doubt:

The language change is that uses of pointers to interface values no longerautomatically de-reference the pointer. A pointer to an interface value ismore often a beginner’s bug than correct code.