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