回答

收藏

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

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

我正在通过为 GAE 编写应用程序学习 Go,这是处理程序函数的签名:1 i0 {+ V* p& S
    func handle(w http.ResponseWriter,r *http.Request) {}3 B( i6 o2 V3 C* J2 }4 G% O4 H
为什么我是这里的指针新手?Request对象是指针,但是ResponseWriter不是吗?是否需要这样使用还是只是为了使基于高级指针的代码成为可能?
+ A. z; t: _9 E- A                                                               
  v. K5 v* b4 u. ?    解决方案:                                                               
$ Y; R  F9 {, ?: M9 g: I$ {                                                                你得到的w指向非导出类型的指针,http.response但作为ResponseWriter它看不见的接口。
3 k. {+ Y! K! e! B) A& [从server.go:. n6 Q1 m# |3 s/ S! u% P0 Q8 P
    type ResponseWriter interface    ...}
    2 y- N" ^$ q! ]
另一方面,r指向特定结构的指针,需要引用显式传输。
6 }  i- l6 T2 E0 v( g1 p从request.go:; z4 C3 [1 W7 @( n# M7 U$ I' O
    type Request struct    ...}
    / g1 I: E6 r* \; C
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则