在 Go HTTP 处理程序中,为什么 ResponseWriter 是一个值而 Request 是一个
技术问答
429 人阅读
|
0 人回复
|
2023-09-11
|
我正在通过为 GAE 编写应用程序学习 Go,这是处理程序函数的签名:
2 f x1 F/ J% y& Pfunc 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 |
|
|
|
|
|