Go: Mapのイテレーション順はランダムだから注意
Iteration order
When iterating over a map with a range loop, the iteration order is not specified and is not guaranteed to be the same from one iteration to the next. If you require a stable iteration order you must maintain a separate data structure that specifies that order. This example uses a separate sorted slice of keys to print a map[int]string in key order:
訳)
反復順序
範囲ループを使用してマップを反復処理する場合、反復順序は指定されておらず、反復ごとに同じであることが保証されていません。 安定した反復順序が必要な場合は、その順序を指定する個別のデータ構造を維持する必要があります。 この例では、個別にソートされたキーのスライスを使用して、map [int] stringをキー順に出力します。
回避するためのコードはこちら
code:Go
import "sort"
var keys []int
for k := range m {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
fmt.Println("Key:", k, "Value:", mk) }
jiroshin.icon この回避コードをみる感じ、sliceのイテレーション順はindex通りということかな。