想必大家都应该知道, Go语言的map元素类型是一个无序的数据结构,
那要实现对无序元素类型map排序操作怎么办呢,
你可以借助array, slice这样的有序结构,进行间接排序操作,
也就实现了这个需求
map元素的间接排序操作
package main
import "fmt"
import "sort"
func main() {
// 原始map
m := map[int]string{2: "b", 1: "a", 3: "c", 5: "e", 6: "f", 4: "d" }
// 空slice切片
s := make([]int, len(m))
// slice 切片索引初始化
index := 0
for k, _ := range m{
// 将变量名为 s 的 slice 的索引为 index 保存为对应变量名为 m 的 map 的键 k
s[index] = k
// 每循环一次, 变量名为 s 的 slice 的索引值 index + 1
index++
}
// 对切片 s 做排序操作, 要导入一个包 sort, 其中有一个方法 Ints 是根据数字排序操作
sort.Ints(s)
// 取出排序后的map元素, 你放心, 每一次取出的值排序一定是 `a b c d e f`, 而不是无序的
for _, v := range s{
fmt.Printf("%s\t",m[v])
}
}
map元素的间接排序结果
a b c d e f