如何在Go中的单独函数中正确使用这些变量?

时间:2016-11-04 03:04:09

标签: go

道歉可能是一个非常基本的问题。

我正在使用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怎么样,我当然不想重新创建变量?

1 个答案:

答案 0 :(得分:3)

你的签名看起来很好。很多人在Go开始做网络工作时忽略的一部分是writer http.ResponseWriter是一个界面值。在Go中,接口值是引用类型,这意味着您已经在内部传递的writer变量包含指向满足该接口的具体值的指针。您可以随时将writer传递给commonFunction并且它已经作为参考。