func (mux *ServeMux) Handle(pattern string, handler Handler){}
上面是HTTP里面注册路由的方法,
func (mux *ServeMux) HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
mux.Handle(pattern, HandlerFunc(handler))
}
上面是调用注册之前的一个处理方法,关键在于函数体内的调用的方法接收的第二个参数HandlerFunc(handler)
type HandlerFunc func(ResponseWriter, *Request)
上面应该算是对指定方法的取一个类型别名叫做HandlerFunc
经过处理之后的handler
怎么和Handler
扯得上关系呢?Handler
是一个interface
啊?
有懂的人嘛?
微信上面有人解答了。
因为
HandlerFunc(handle)
,是将其包装成一个实现Handler
接口的类型.type HandlerFunc func(ResponseWriter, *Request)
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) { f(w, r) }
因为Handler使用了
Handler
接口的ServeHTTP
方法,所以就自动实现了这个接口.