Golang顺序输出map

golang中map每次输出时顺序都不一致,在某些情况下甚至需要按顺序输出map。那么如何做到顺序输出呢?

  1. map每次输出结果都不一致
package main

import (
    "fmt"
    "sort"
)

func main() {
    mp := make(map[string]string)
    mp["beijing"] = "beijing"
    mp["tianjin"] = "tianjin"
    mp["shanghai"] = "shanghai"
    mp["chongqing"] = "chongqing"
    mp["guangdong"] = "guangzhou"
    mp["jiangsu"] = "nanjing"
    mp["zhejiang"] = "hanzhou"

    for key, value := range mp {
        fmt.Println(key, " ----> ", value)
    }

    fmt.Println("second output")
    for key, value := range mp {
        fmt.Println(key, " ----> ", value)
    }
}

两次输出打印结果不一致,如下输出结果为:

chongqing ----> chongqing
guangdong ----> guangzhou
jiangsu ----> nanjing
zhejiang ----> hanzhou
beijing ----> beijing
tianjin ----> tianjin
shanghai ----> shanghai
second output
chongqing ----> chongqing
guangdong ----> guangzhou
jiangsu ----> nanjing
zhejiang ----> hanzhou
beijing ----> beijing
tianjin ----> tianjin
shanghai ----> shanghai

  1. 顺序输出map
    实现顺序输出map,首先需要获取map中所有key,然后将key排序,最后按排序后key输出map。
package main

import (
    "fmt"
    "sort"
)

func main() {
    mp := make(map[string]string)
    mp["beijing"] = "beijing"
    mp["tianjin"] = "tianjin"
    mp["shanghai"] = "shanghai"
    mp["chongqing"] = "chongqing"
    mp["guangdong"] = "guangzhou"
    mp["jiangsu"] = "nanjing"
    mp["zhejiang"] = "hanzhou"

    for key, value := range mp {
        fmt.Println(key, " ----> ", value)
    }

    fmt.Println("second output")
    for key, value := range mp {
        fmt.Println(key, " ----> ", value)
    }

    fmt.Println("sort output")
    keys := []string{}
    for key, _ := range mp {
        keys = append(keys, key)
    }
    sort.Strings(keys)
    for _, key := range keys {
        fmt.Println(key, " ----> ", mp[key])
    }
    return
}

排序后输出结果为按key排序结果

chongqing ----> chongqing
guangdong ----> guangzhou
jiangsu ----> nanjing
zhejiang ----> hanzhou
beijing ----> beijing
tianjin ----> tianjin
shanghai ----> shanghai
second output
chongqing ----> chongqing
guangdong ----> guangzhou
jiangsu ----> nanjing
zhejiang ----> hanzhou
beijing ----> beijing
tianjin ----> tianjin
shanghai ----> shanghai
sort output
beijing ----> beijing
chongqing ----> chongqing
guangdong ----> guangzhou
jiangsu ----> nanjing
shanghai ----> shanghai
tianjin ----> tianjin
zhejiang ----> hanzhou

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容