チャネルへのポインタを使用するのは良い方法ですか?たとえば、私はデータを同時に読み込み、map[string]sting
チャンネルを使ってこのチャンネルをgetSameValues()
の内部で処理します。チャネルへのポインタの使用
func getSameValues(results *chan map[string]string) []string {
var datas = make([]map[string]string, len(*results))
i := 0
for values := range *results {
datas[i] = values
i++
}
}
chan map[string]string
はマップ内のデータの何百万人の周りがあるでしょうし、それは、複数のマップとなりますので、私はこれを行う理由があります。
私は、メモリへのリソースを節約するためにデータをコピーしないように、関数へのポインタを渡すことができればよいアプローチだと思います。
私はeffective goで良い習慣を見つけられませんでした。だから私はここで私のアプローチについて疑いがあります。
"参照によって渡される5つのカテゴリの値" ---実際には、Goのすべてが値渡されます。 https://golang.org/doc/faq#pass_by_value "Cファミリのすべての言語と同様に、Goのすべてが価値によって渡されます。 – zerkms
はい、それは本当に、おそらく私は過度に単純化していました。5つのカテゴリはすべて参照型であり、参照のコピー(または参照パラメータの渡し)は参照するものをコピーしません。すべてが価値によって渡されたということは、異なる意味で過度の単純化であると主張するかもしれない。渡されたパラメータに加えた変更が、その値の範囲を超えた影響を受けるかどうかを理解する必要があります。 –