Go - Sorting Maps

发布时间 2023-10-08 15:37:09作者: ZhangZhihuiAAA

Problem: You want to sort a map by its keys.


Solution: Get the keys of the map in a slice and sort that slice. Then, using the sorted slice of keys, iterate through the map again.

 

Maps are unordered. This means each time you iterate through a map, the order of the key - value pairs might not be the same as the previous time. So how can you ensure that it’s the same each time?

First, extract the keys into a slice:

var   keys   [] string 
for   k   :=   range   people   { 
      keys   =   append ( keys ,   k ) 
}

Then sort the keys accordingly. In this case, you want to sort by descending order:

//  sort  keys  by  descending  order 
for   i   :=   len ( keys ) / 2   -   1 ;   i   >=   0 ;   i - -   { 
      opp   :=   len ( keys )   -   1   -   i 
      keys [ i ],   keys [ opp ]   =   keys [ opp ],   keys [ i ] 
}

Finally, you can access the map by the descending order of the keys:

for   _ ,   key   :=   range   keys   { 
      fmt . Println ( key ,   people [ key ]) 
}