登录
首页 >  Golang >  Go问答

Go net/http包里有些没搞清楚~

来源:SegmentFault

时间:2023-01-24 07:58:18 227浏览 收藏

本篇文章给大家分享《Go net/http包里有些没搞清楚~》,覆盖了Golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

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
方法,所以就自动实现了这个接口.

本篇关于《Go net/http包里有些没搞清楚~》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表