当前位置: 首页 > 面试题库 >

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

郎聪
2023-03-14
问题内容

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

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

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


问题答案:

您得到的w是指向非导出类型的指针,http.response但与ResponseWriter接口一样,这是不可见的。

从server.go:

type ResponseWriter interface {
    ...
}

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

从request.go:

type Request struct {
    ...
}


 类似资料: