假设我有一个中央方法,它将特定的 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/

10-16 16:26