Golang笔记

GoLang Map key 排序输出的例子

由于GoLang Map 结构比较特殊,如果照常规遍历,每次输出的key 顺序都不同。这是GoLang 团队故意设计的。

目的是避免人们过于依赖这种通常情况下key的存储顺序和key的添加顺序一致的特性,所以他们把key的遍历顺序随机化了。如果你希望key的输出顺序和添加顺序一致的话,你需要自己去追踪哪个值存储在哪个位置,就像下面的实现:

package main

import (
    "fmt"
    "sort"
)

func main() {
    var m = map[string]int{
        "unix":         0,
        "python":       1,
        "go":           2,
        "javascript":   3,
        "testing":      4,
        "philosophy":   5,
        "startups":     6,
        "productivity": 7,
        "hn":           8,
        "reddit":       9,
        "C++":          10,
    }
    var keys []string
    for k := range m {
        keys = append(keys, k)
    }
    sort.Strings(keys)
    for _, k := range keys {
        fmt.Println("Key:", k, "Value:", m[k])
    }
}

运行输出:

Key: C++ Value: 10
Key: go Value: 2
Key: hn Value: 8
Key: javascript Value: 3
Key: philosophy Value: 5
Key: productivity Value: 7
Key: python Value: 1
Key: reddit Value: 9
Key: startups Value: 6
Key: testing Value: 4
Key: unix Value: 0

这是 http://blog.golang.org/go-maps-in-action 45 提供的方法

本文网址: https://golangnote.com/topic/45.html (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles