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

type Handler interface {
        ServeHTTP(ResponseWriter, *Request)
}

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

已邀请:

astaxie - 创造、获取、分享、传播和应用Go

赞同来自:

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

要回复问题请先登录注册