在主题函数返回的代码中迭代返回的映射时,键未按顺序显示。
我如何才能使键按顺序排列/对地图进行排序,以使键按顺序排列并且值对应?
这是代码。
在围棋博客:去映射在行动中有极好的说明。
当使用范围循环在地图上进行迭代时,未指定迭代顺序,并且不能保证每次迭代之间都相同。从Go 1开始,运行时间会随机化映射迭代顺序,因为程序员依赖于先前实现的稳定迭代顺序。如果需要稳定的迭代顺序,则必须维护一个指定该顺序的单独的数据结构。
这是我对示例代码的修改后的版本:http : //play.golang.org/p/dvqcGPYy3-
package main import ( "fmt" "sort" ) func main() { // To create a map as input m := make(map[int]string) m[1] = "a" m[2] = "c" m[0] = "b" // To store the keys in slice in sorted order var keys []int for k := range m { keys = append(keys, k) } sort.Ints(keys) // To perform the opertion you want for _, k := range keys { fmt.Println("Key:", k, "Value:", m[k]) } }
输出:
Key: 0 Value: b Key: 1 Value: a Key: 2 Value: c