2016-11-04 12 views
2

非常に基本的な質問である可能性のあるものについてはお詫び申し上げます。これらの変数をGoの別の関数で適切に使用するにはどうすればよいですか?

私はhttpさんlistenAndServeを使用していて、それは次の関数を呼び出します。その関数に含まれるコードの

func library(writer http.ResponseWriter, request *http.Request) 

多くは他の場所で適用されますので、私は別の関数にそれを引き出すために望んでいました、以下のような:

func commonFunction(doThing bool, writer http.ResponseWriter, request *http.Request) 

しかし、私はそれにlibraryから、これら2つの変数を渡している場合commonFunctionため、その関数ヘッダーが正しいのですか?

私はそれをcommonFunction(true, writer, request)と呼びますか?

これらの変数へのポインタを渡す必要がある場合は、ほとんど混乱しますか? http.Requestは既にポインタなので、意味がないでしょうが、http.ResponseWriterはどうしても変数を再作成したくないのですか?

答えて

3

あなたの署名は正常です。最初にGoでWeb作業を始めたときに見落とされる部分は、writer http.ResponseWriterがインターフェイス値であることです。 Goのインターフェース値は、すでに内部で渡されている変数writerにそのインターフェースを満たす具体的な値へのポインターが含まれていることを意味する参照型です。あなたはwritercommonFunctionに自由に渡すことができ、すでに参考になっています。

関連する問題