假设我有一个中央方法,它将特定的 header 添加到http.ResponseWriter。我不想使用HandleFunc包装器。
我想知道是否要通过引用发送ResponseWriter。因此,正确的是:
addHeaders(&w)
或者
addHeaders(w)
提出不同的要求:
func addHeaders(w *http.ResponseWriter) {...}
或者
func addHeaders(w http.ResponseWriter) {...}
根据我的理解,我会说第一个版本是正确的,因为我不想创建ResponseWriter的副本。但是我还没有看到任何通过引用传递ResponseWriter的代码,不知道为什么。
谢谢!
最佳答案
http.ResponseWriter
是一个接口(interface)。您想传递其值,因为它的内部包含一个指向实际Writer的指针。您几乎永远都不需要指向接口(interface)的指针。
查看什么是标准处理程序func的签名:
func(http.ResponseWriter, *http.Request)
注意,ResponseWriter不是指针。
关于go - 通过值或引用传递http.ResponseWriter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22157514/