在 Go HTTP 处理程序中,为什么 ResponseWriter 是一个值而 Request 是一个
技术问答
543 人阅读
|
0 人回复
|
2023-09-11
|
我正在通过为 GAE 编写应用程序学习 Go,这是处理程序函数的签名:
: Z2 m: @( e* k/ p" y: N5 Yfunc 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* `
|
|
|
|
|
|