回答

收藏

如何按顺序遍历Golang中的地图?

技术问答 技术问答 294 人阅读 | 0 人回复 | 2023-09-12

请看下面我的地图
0 {, ^8 F; X2 U* h/ w$ O
    var romanNumeralDict map[int]string = map[int]string{  1000: "M", 900 : "CM", 500 : "D", 400 : "CD", 100 : "C", 90  : "XC", 50  : "L", 40  : "XL", 10  : "X", "IX", 5   : "V", "IV", 1   : "I",}
    4 B5 N" f) |2 w& v: ]
我希望按照密钥大小的顺序遍历此地图
8 E% V7 n2 u) K! i0 ^: Q7 n
      for k,v := range romanNumeralDict    fmt.Println("k:",k,"v:",v)  }
    # a# B; N6 K5 M/ b2 z7 p! {
但是,它会被打印出来5 g1 R; y& q$ m9 L: L
    k: 1000 v: Mk: 40 v: XLk: 5 v: Vk: 4 v: IVk: 900 v: CMk: 500 v: Dk: 400 v: CDk: 100 v: Ck: 90 v: XCk: 50 v: Lk: 10 v: Xk: 9 v: IXk: 1 v: I# U0 C" v; A, |! w: a3 h) Z
有没有办法按照密钥大小的顺序打印出来?因此,我想这样一个循环遍这张地图
9 ~8 c  I( D# s6 B9 t* \8 Y
    k:1K:4K:5K:9k:10$ U" o; k% N% K1 s
等等…# M$ R2 c3 T1 h+ ]
非常感谢您的帮助!
* E3 ~6 x6 N+ n: C* }% \                                                               
- t! e& F2 [& h9 H    解决方案:                                                               
8 a2 ]! |( x& A9 b7 B                                                                收集所有键,对其进行排序,并按键迭代您的地图,如下所示:
0 V, k- B- G  r$ y" p
    keys := make([]int,0)for k,_ := range romanNumeralDict    keys = append(keys,k)}sort.Ints(keys)for _,k := range keys    fmt.Println(k,romanNumeralDict[k])}
    ' r8 G; P: r8 y  J! {
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则