小编典典

在 Go HTTP 处理程序中,为什么 ResponseWriter 是一个值而 Request 是一个指针?

go

我正在通过为 GAE 编写应用程序来学习 Go,这是处理程序函数的签名:

func handle(w http.ResponseWriter, r *http.Request) {}

我是这里的指针新手,为什么Request对象是指针,但ResponseWriter不是?是否需要以这种方式使用它,或者这只是为了使某种基于高级指针的代码成为可能?


阅读 282

收藏
2021-12-06

共1个答案

小编典典

你得到的w是一个指向非导出类型的指针,http.response但作为ResponseWriter一个接口,它是不可见的。

server.go

type ResponseWriter interface {
    ...
}

另一方面,r是指向具体结构的指针,因此需要显式传递引用。

request.go

type Request struct {
    ...
}
2021-12-06