如:for index,row := range rows { } 不论是切片(slice)或对象(map)
func RangeMap(myMap map[int]string) {
// 直接遍历复制value
for index,row := range rows {
fmt.Println(row)
}
// 通过key取value
for key, _ := range myMap {
_, _ = key, myMap[key]
}
}
原理:
在for...range遍历时,若参数中存在value,是将遍历的内容row,直接复制一份出来,然后供你去取值和传递。(不会改变原来的值)
A、在数据量足够大时,若遍历时都进行复制,则系统开销或性能损耗较大。
B、在数据量不大时,只获取key值,然后根据key值获取value值,虽然看似减少了一次赋值,但通过key值查找value值的性能消耗可能高于赋值消耗。
总结:
如何使用A或B,取决于map所存储数据结构特征、结合实际情况进行。
注:以上文字属于自己思考,才疏学浅有问题请指出。
本文探讨了Go语言中Map的两种遍历方式及其性能考量。一种是在遍历过程中直接复制值,另一种是通过Key获取Value。具体选择哪种方式取决于Map存储的数据结构特征及实际应用场景。

被折叠的 条评论
为什么被折叠?



