使用指向通道的指針是否很好?例如,我同時讀取數據並使用通道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沒有找到好的做法。所以我有點懷疑我的方法在這裏。
「通過引用傳遞的五種價值類別」---實際上Go中的所有內容都是按值傳遞的。 https://golang.org/doc/faq#pass_by_value「與C系列中的所有語言一樣,Go中的所有內容都是有價值的。」 – zerkms
是的,這可能是我過分簡化了:五個類別都是引用類型,複製引用(或傳遞引用參數)不會複製它引用的內容。有人可能會爭辯說,所有事情都是有價值的,從另一個角度來說,這是過度簡化。我需要了解我對傳遞的參數所做的更改是否會超出值的範圍。 –