假设我有一个方法 http.HandleFunctype HandlerFunc func(ResponseWriter, *Request)我想将它包装在另一个相同类型的方法周围,如下所示:func MyWrapper(res http.ResponseWriter, req *http.Request) { // do stuff AnotherMethod(res, req) // <- question refers to this line // do more stuff}func AnotherMethod(res http.ResponseWriter, req *http.Request) { // main logic}如果我做对了,当我打电话时,我将(的值)AnotherMethod(res, req)的副本传递res给AnotherMethod,这意味着该对象现在在内存中重复了。有没有一种方法可以将指针传递res到AnotherMethod,然后在其中取消引用,以便不复制的值res?还是我不明白某事?(使用指向res内部(的值)的指针AnotherMethod将不起作用,因为inhttp.ResponseWriter中所有方法的接收者都是值而不是指针)
1 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
http.ResponseWriter
是接口类型。这意味着它既可以是引用类型,也可以是值类型,这取决于基础类型是什么以及实现接口的方式。
在这种情况下,res
是unexported类型的实例*http.response
。如您所见,它是一个指针类型,这意味着您可以传递它而无需创建整个结构的副本。
要查看所接收的接口值中包含什么实型,可以执行以下操作:fmt.Printf("%T\n", res)
。它应该打印:*http.resonse
。
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消