道歉可能是一个非常基本的问题。
我正在使用http
的{{1}},并调用以下函数:
listenAndServe
该函数中包含的许多代码都适用于其他地方,所以我想把它带到另一个函数中,例如:
func library(writer http.ResponseWriter, request *http.Request)
但如果我将func commonFunction(doThing bool, writer http.ResponseWriter, request *http.Request)
中的这两个变量传递给它,那么commonFunction
的函数头是否正确?
我会将其称为library
吗?
如果我应该将指针传递给这些变量,我会感到困惑吗?对于commonFunction(true, writer, request)
而言,它已经是一个指针是有意义的,但是http.Request
怎么样,我当然不想重新创建变量?
答案 0 :(得分:3)
你的签名看起来很好。很多人在Go开始做网络工作时忽略的一部分是writer http.ResponseWriter
是一个界面值。在Go中,接口值是引用类型,这意味着您已经在内部传递的writer
变量包含指向满足该接口的具体值的指针。您可以随时将writer
传递给commonFunction
并且它已经作为参考。