Function as a Method Receiver
通常来说,我们会使用某个具体的对象(struct)来作为receiver实现接口,但有时候,使用函数作为receiver可以起到不一样的效果。 使用函数作为receiver一个最常见的例子是HandleFunc: type HandlerFunc func(ResponseWriter, *Request) func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) { f(w, r) } 这里将HandleFunc作为接收器,实现了ServeHTTP方法,同时也实现了http.Handler接口 type Handler interface { ServeHTTP(ResponseWriter, *Request) } 代码注释中对与HandleFunc的解释如下: // The HandlerFunc type is an adapter to allow the use of // ordinary functions as HTTP handlers. If f is a function // with the appropriate signature, HandlerFunc(f) is a // Handler that calls f. HandleFunc的定位是:适配器。为什么这么说?有了这个适配器,我们就可以这样完成一个http server: func main() { http.HandleFunc("/echo", func(w http.ResponseWriter, r *http....