Go 应该返回Handler的函数如何返回HandlerFunc?

Go 应该返回Handler的函数如何返回HandlerFunc?,go,Go,链接处理程序时,函数的返回类型为Handler,但它实际上返回HandlerFunc。这不会引发任何错误 如何接受HandlerFunc代替处理程序,前者是函数类型,后者是接口类型 func log(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... }) } 是一个接口。是实现该接口的具体类型。这些都记录在文档中。如果

链接处理程序时,函数的返回类型为Handler,但它实际上返回HandlerFunc。这不会引发任何错误

如何接受HandlerFunc代替处理程序,前者是函数类型,后者是接口类型

func log(h http.Handler) http.Handler {
  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    ...
  })
}
是一个接口。是实现该接口的具体类型。这些都记录在文档中。如果接口对您来说是新的,那么从开始

HandlerFunc类型是允许使用普通 用作HTTP处理程序。如果f是一个具有适当 签名HandlerFunc(f)是调用f的处理程序

http.Handler是一个接口:

type Handler interface {
    ServeHTTP(ResponseWriter, *Request)
}
http.HandlerFunc是一种类型:

type HandlerFunc func(ResponseWriter, *Request)

// ServeHTTP calls f(w, r).
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
    f(w, r)
}