登录
首页 >  Golang >  Go问答

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

来源:Golang技术栈

时间:2023-03-03 14:10:07 317浏览 收藏

golang学习网今天将给大家带来《在 Go HTTP 处理程序中,为什么 ResponseWriter 是一个值,而 Request 是一个指针?》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到golang等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我正在通过为 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 {
    ...
}

本篇关于《在 Go HTTP 处理程序中,为什么 ResponseWriter 是一个值,而 Request 是一个指针?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>