回答

收藏

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

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

我正在通过为 GAE 编写应用程序学习 Go,这是处理程序函数的签名:
2 f  x1 F/ J% y& P
    func handle(w http.ResponseWriter,r *http.Request) {}" E: ?) A" Q1 p8 b% X9 h
为什么我是这里的指针新手?Request对象是指针,但是ResponseWriter不是吗?是否需要这样使用还是只是为了使基于高级指针的代码成为可能?  m$ a+ j* `. N: O" P% t
                                                               
4 w8 g3 F3 Z8 u. r  \3 J# \    解决方案:                                                               
+ B) _: L# K; r) U% N: f                                                                你得到的w指向非导出类型的指针,http.response但作为ResponseWriter它看不见的接口。5 E  D( ]: e2 p' T
从server.go:/ N, W: c/ _* h, D0 o
    type ResponseWriter interface    ...}- P' k2 j; C. w6 {& ~" x
另一方面,r指向特定结构的指针,需要引用显式传输。! O' p% J  ~1 }4 A5 Q7 F3 V( r, ~% U
从request.go:2 |) W1 P# |3 L6 Z" |( K8 J# \9 u
    type Request struct    ...}
    - e' ], n" `* b% X5 Z9 s; X
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则