回答

收藏

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

技术问答 技术问答 543 人阅读 | 0 人回复 | 2023-09-11

我正在通过为 GAE 编写应用程序学习 Go,这是处理程序函数的签名:
: Z2 m: @( e* k/ p" y: N5 Y
    func handle(w http.ResponseWriter,r *http.Request) {}
    ! d" I6 r" B4 d3 F0 E$ Q
为什么我是这里的指针新手?Request对象是指针,但是ResponseWriter不是吗?是否需要这样使用还是只是为了使基于高级指针的代码成为可能?) ]" a* f8 T9 \! O
                                                               
% h2 b/ g1 {) S% p    解决方案:                                                                2 o9 g" [  a" q9 q# M4 P9 m
                                                                你得到的w指向非导出类型的指针,http.response但作为ResponseWriter它看不见的接口。; M; @/ h6 Y8 W9 r* w; d
从server.go:9 v: Y4 K* R$ I9 ^/ |  K4 H
    type ResponseWriter interface    ...}2 f, C! g! T: H: S; l& Q
另一方面,r指向特定结构的指针,需要引用显式传输。0 Q0 D! ?* a, S- f
从request.go:7 X5 s9 I' N& p) e1 f
    type Request struct    ...}) h' c2 t2 }: B! S: S% P5 `$ g; v* `
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则