go语言中如何对map排序

golang的map是无序的,不管是按照 key 还是value 默认都不排序, 如果要为 map 排序,需要将 key 拷贝到一个切片,对切片排序,然后使用切片的 for-range 方法打印出map中所有的 key 和 value。例如:

package main

import (
    "sort"
    "fmt"
)

func main(){
    user := make(map[string]string)
    user["name"] = "小红"
    user["age"] = "18"
    user["sex"] = "女"

    var keys []string
    for k := range user {
        keys = append(keys, k)
    }
    //按字典升序排列
    sort.Strings(keys)
    //按字典降序排列
    //sort.Sort(sort.Reverse(sort.StringSlice(keys)))

    for _, k := range keys {
        fmt.Println("Key:", k, "Value:", user[k])
    }
}

输出

Key: age Value: 18
Key: name Value: 小红
Key: sex Value: 女
0个回答
36nu 分享编程知识及经验

已有账号?立即登录
微信公众号
关注36nu微信公众账号
获取最新编程知识及经验