1 遍历顺序
Go语言里的map,是不保证遍历顺序的(这一点很好理解)。甚至同样内容的map,两次遍历的顺序,也可能不一样。下面是一个例子:
m :=
map[
string]
int{
"a1":
1,
"b2":
10,
"c3":
2,}
for k, v :=
range m {fmt.Printf(
"%s=%d;", k, v)}
println()
for k, v :=
range m {fmt.Printf(
"%s=%d;", k, v)}
2 遍历时进行操作
遍历map的时候,可以对map进行操作(增、删、改)。如果遍历的过程中,删除了某个已经遍历过的entry,不会有任何问题。如果删除了某个还未被遍历到的entry,那么这个entry就不会被遍历到了。如果遍历过程中添加了新的entry,这个entry则不一定能在后续被遍历到。
3 参考资料
http://stackoverflow.com/questions/23229975/is-it-safe-to-remove-selected-keys-from-golang-map-within-a-range-loop
转载请注明原文地址: https://ju.6miu.com/read-668314.html