golang map輸出排序

因爲GoLang Map 內部存儲是無序的,當須要按順序得到map存儲的key -value值時,應該對遍歷出來的結果進行從新排序;app

在go 1.8版本後,提供的slice sort 功能使排序更簡單:spa

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]int{
        "something": 10,
        "yo":        20,
        "blah":      20,
    }

    type kv struct {
        Key   string
        Value int
    }

    var ss []kv
    for k, v := range m {
        ss = append(ss, kv{k, v})
    }

    sort.Slice(ss, func(i, j int) bool {
        return ss[i].Value > ss[j].Value  // 降序
        // return ss[i].Value < ss[j].Value  // 升序
    })

    for _, kv := range ss {
        fmt.Printf("%s, %d\n", kv.Key, kv.Value)
    }
}
相關文章
相關標籤/搜索