チャネルへのポインタを使用することは良い習慣ですか?たとえば、データを同時に読み取り、チャネルを使用してそれらのデータを_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
_がマップ内に約数百万のデータを持ち、それが複数のマップになるためです。
したがって、メモリのリソースを節約するためにデータをコピーしないように、関数へのポインタを渡すことができれば、それは良いアプローチだと思います。
効果的なgo で良い習慣を見つけられませんでした。ですから、ここでの私のアプローチには少し疑問があります。
ゴーランドのすべては価値によって渡されます。ポインタもタイプであり、メモリアドレスの値が割り当てられます。ですから、それらも価値観です。
(リックの答えを拡張する)実際には[〜#〜] six [〜#〜]型があり、ポインタ値とこれらへのポインタ(つまりポインタへのポインタ)はとにかく役に立ちません:
1. pointers
2. slices,
3. maps,
4. channels
5. interfaces
6. function