为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
料青山看我应如是 2023-07-04 14:50:48
在链接处理程序时,该函数的返回类型为 Handler,但它实际上返回一个 HandlerFunc。这不会引发任何错误。如何接受 HandlerFunc 来代替 Handler,前者是函数类型,后者是接口类型?func log(h http.Handler) http.Handler {  return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {    ...  })}
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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


这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)

}


查看完整回答
反对 回复 2023-07-04
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

http.Handler是一个接口。http.HandlerFunc是实现该接口的具体类型。这一切都记录在http包文档中。如果您对界面不熟悉,请从A Tour of Go开始。



查看完整回答
反对 回复 2023-07-04
  • 2 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信