是的map,或者更确切地说map[string]int
默认情况下,据我了解,Golang它按字母顺序按键对元素进行排序。如何map按给定顺序按键排序?
这段代码:
package main
import (
"fmt"
)
func main() {
output := make(map[string]int)
basket := map[string]int{
"orange": 5,
"apple": 7,
"mango": 3,
"strawberry": 9,
}
//нужный порядок
keys := []string{
"strawberry",
"mango",
"orange",
}
for _, k := range keys {
output[k] = basket[k]
}
fmt.Printf("вывод output : %+v \n", output)
}
将生成带有按字母顺序排列的键的行:
mango, orange, strawberry
对于打印,
map标准库确实按键排序。这就是fmtsort.Sort函数的作用。但是Go中键/值的枚举是故意随机的。每次迭代映射中的键时,都可以获得一个新序列:https://go.dev/play/p/wgHyoYTGC-t
要对地图进行排序,您需要创建一个键值对数组并对其进行排序:https://go.dev/play/p/8SbeIbCTleJ
结果:
map- 这是键:值形式的未排序集合,不保留插入顺序,使用排序键完成搜索(但这不准确)。常规字典在 Python(直到某个版本,似乎是 3.6)和其他编程语言中的行为方式大致相同。要保留插入顺序,您需要编写自己的类,或者使用保留插入顺序的现成包:orderedmap。