Go问答 为什么http标准库的Handler第一个参数是接口,第二个是结构体,出于哪些方面考虑呢?

cloudaice · 2016年10月14日 · 最后由 astaxie 回复于 2016年10月14日 · 460 次阅读
type Handler interface {
        ServeHTTP(ResponseWriter, *Request)
}

如上,ServeHTPP 方法的第一个参数是一个接口定义,而第二个参数是一个实例类型的引用,这样的设计是出于什么考虑呢?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

我个人的猜测是 response 已经比较容易抽象了,Header、Body 两部分,当然这个 response 里面我们可能在少数情况下还会用到CloseNotifier, Flusher, Hijack这三个 interface,然后对于 request 来说这个就比较难抽象了,request 里面的信息太多而且比较复杂,例如有 URL 对象,header 对象,Body 或者 Form 信息等。当然也不是不可以抽象,只是这样的抽象实际意义可能更小一点。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册