Original post

In this link, the relevant snippet is this

type HandlerFunc func(w ResponseWriter, r *Request)

func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
  f(w, r)

type Handler interface {
  ServeHTTP(ResponseWriter, *Request)

Notice how HandlerFunc has a ServeHTTP method that matches the one required by the Handler interface, which means that HandlerFunc implements the Handler interface. This may seem odd, but it is completely valid  code. After all, HandlerFunc is just another type and we add methods to types all the time.

Because HandlerFunc implements the Handler interface ...

My question is the usage of the word “implements”. Can I also say the Handler interface “implements” the HandlerFunc? If not, why? Is it because only non-interface types can “implement” interfaces?