基本介绍

  1. Go中没有专门的方法对map的key进行排序
  2. 默认是无序的,不是按照添加的顺序存放的,每次遍历输出的结果可能不一样

    实现

    可以针对key进行排序,然后根据key值遍历输出即可。

func Ints(a []int)
Ints函数将a排序为递增顺序。

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. )
  6. func main() {
  7. mymap := make(map[int]int, 10)
  8. mymap[8] = 64
  9. mymap[10] = 100
  10. mymap[2] = 4
  11. mymap[5] = 25
  12. mymap[0] = 0
  13. fmt.Println("mymap = ", mymap) // map[0:0 2:4 5:25 10:100]
  14. /*
  15. 排序
  16. 1.遍历map,把key存放在切片中(切片可以动态增加)
  17. 2.对切片排序
  18. 3.遍历切片,按照key输出
  19. */
  20. var keyList []int
  21. for k, _ := range mymap {
  22. keyList = append(keyList, k)
  23. }
  24. fmt.Println("keyList = ", keyList)
  25. sort.Ints(keyList)
  26. fmt.Println("排序后keyList = ", keyList)
  27. // 按照keyList遍历map, 输出
  28. for _, v1 := range keyList {
  29. fmt.Printf("%v: %v \n", v1, mymap[v1])
  30. }
  31. }
  32. // 输出
  33. mymap = map[0:0 2:4 5:25 8:64 10:100]
  34. keyList = [8 10 0 2 5]
  35. 排序后keyList = [0 2 5 8 10]
  36. map[0]: 0
  37. map[2]: 4
  38. map[5]: 25
  39. map[8]: 64
  40. map[10]: 100