我正在学习为GAE编写应用程序,这是处理函数的签名:
func handle(w http.ResponseWriter, r *http.Request) {}
我是指针新手,为什么Request
是指针,而ResponseWriter
不是?有没有必要这样做,或者这只是为了让一些基于指针的高级代码成为可能?
我正在学习为GAE编写应用程序,这是处理函数的签名:
func handle(w http.ResponseWriter, r *http.Request) {}
我是指针新手,为什么Request
是指针,而ResponseWriter
不是?有没有必要这样做,或者这只是为了让一些基于指针的高级代码成为可能?
w
得到的是一个指向非导出类型http.response
的指针,但由于ResponseWriter
是一个接口,所以不可见.
从server.go开始:
type ResponseWriter interface {
...
}
另一方面,r
是指向具体 struct 的指针,因此需要显式传递引用.
从request.go开始:
type Request struct {
...
}