回答

收藏

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

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

请看下面我的地图
+ K/ T! v* k4 b* A+ V- j/ i7 x" x
    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 s  F& @3 |% w; W' d  R! O
我希望按照密钥大小的顺序遍历此地图
# T0 {% A8 X) k9 E# j
      for k,v := range romanNumeralDict    fmt.Println("k:",k,"v:",v)  }
    ' I- ^/ Y# a# Y4 M7 r$ [  A3 r
但是,它会被打印出来
: |! G$ p  L& j8 X: ?3 g- N
    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
    1 }- h' [9 Q' k" y8 p! {5 S
有没有办法按照密钥大小的顺序打印出来?因此,我想这样一个循环遍这张地图
5 |+ g/ o2 t+ X3 C3 m3 _/ A: [1 D
    k:1K:4K:5K:9k:10
    ) @9 j6 |# Z' v
等等…
# g' i1 C% D- Y, T4 t非常感谢您的帮助!
  m+ U' w# t, d) P2 r                                                               
8 K& C1 {3 c5 q( n& X    解决方案:                                                               
# A5 T8 u) _2 [% V' K- T                                                                收集所有键,对其进行排序,并按键迭代您的地图,如下所示:
! N- f1 Q2 N* C2 `7 s8 v
    keys := make([]int,0)for k,_ := range romanNumeralDict    keys = append(keys,k)}sort.Ints(keys)for _,k := range keys    fmt.Println(k,romanNumeralDict[k])}' \/ H; \4 o. ^" h1 T: C
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则