Go語言小知識之map遍歷

zxh0發表於2017-04-13

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)} // c3=2;a1=1;b2=10;
println()
for k, v := range m {fmt.Printf("%s=%d;", k, v)} // a1=1;b2=10;c3=2;

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

相關文章