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 ]) }