我正在学习为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 {
    ...
}

Go相关问答推荐

mockgen不创建模拟

Go源在Goland(IDEA)中以灰色显示.什么意思?我怎么才能让它恢复正常?

如何在Golang中使用ECHO服务器实现Socket.IO服务器

Date.Format正在输出非常奇怪的日期

可以';t从主机连接到ScyllaDB容器

Go 中的sync.Cond 与 Wait 方法

AWS Lambda 中的 Websocket URL 超时达到错误

用于提取 <*n 的正则表达式(其中 n 是一个数字)

无法从主域访问子域:无Access-Control-Allow-Origin

使用 LINQ 对内部数组进行排序

MQTT 客户端没有收到另一个客户端发送的消息

如果值为 false,gRPC 不返回布尔值

Golang Oauth2 服务帐户返回空刷新令牌字符串

Golang:如何判断通过缓冲通道进行通信时生产者或消费者是否较慢?

如何根据 Go 中第二次出现的分隔符拆分字符串?

Golang - 将 [8] 布尔转换为字节

Go 并发、goroutine 同步和关闭通道

Golang泛型在用作 map 元素时不起作用

Go/Golang:如何从 big.Float 中提取最低有效数字?

带有 *s3.S3 对象的 Golang 单元测试