回答

收藏

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

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

请看下面我的地图" H1 c) ?, g" \* }, }: l  G
    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",}. g: k7 U0 d) d+ X' C
我希望按照密钥大小的顺序遍历此地图
. R" Y0 X( b% W' u0 P; G) V
      for k,v := range romanNumeralDict    fmt.Println("k:",k,"v:",v)  }, G0 F* H* D3 x) k8 ^7 j7 ]
但是,它会被打印出来- W8 W! W8 U1 B
    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: I4 c0 {9 I( G6 ?8 s0 r$ F
有没有办法按照密钥大小的顺序打印出来?因此,我想这样一个循环遍这张地图, j: q8 Z. t. T" o  G4 z. f
    k:1K:4K:5K:9k:10
    $ O( f4 ~1 t( e* a; J' ]
等等…) z- N6 p. P! @+ r: A5 p+ n
非常感谢您的帮助!- i9 t% }" _5 B; T6 z) U4 Y% I
                                                                $ m; f! U( o, a: B" ]4 g7 F
    解决方案:                                                                / K/ y3 v( z3 U% i* T* N( R# l
                                                                收集所有键,对其进行排序,并按键迭代您的地图,如下所示:/ ]& S3 q1 m/ B5 H
    keys := make([]int,0)for k,_ := range romanNumeralDict    keys = append(keys,k)}sort.Ints(keys)for _,k := range keys    fmt.Println(k,romanNumeralDict[k])}! t1 l  ^$ ~/ F7 G: H$ F, a# K& _
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则