1 回答

TA贡献1775条经验 获得超11个赞
a 上的迭代顺序map
,因为它是一个哈希表,所以它是相当不确定的(实际上,它不是 - 将具有相同键的项目以完全相同的顺序插入到 2 个映射中,每个映射的迭代顺序将是相同的)。
假设您的地图是一个map[string]Hit
,为了以确定的顺序对其进行迭代,我将枚举地图中的键集,对其进行排序,然后使用该排序集来枚举地图。
是这样的:
package main
import (
"fmt"
"sort"
)
type Hit struct {
Key string `json:"key"`
Data []Field `json:"data"`
}
type Field struct {
Value string `json:"value"`
}
func main() {
var mapOfHits = getSomeHits()
var sortedHits = sortHits(mapOfHits)
for _, h := range sortedHits {
fmt.Println(h.Key)
}
}
func getSomeHits() map[string]Hit {
return make(map[string]Hit, 0)
}
func sortHits(m map[string]Hit) []Hit {
keys := make([]string, 0, len(m))
sorted := make([]Hit, 0, len(m))
for k := range m {
keys = append(keys, k)
}
sort.Strings(keys)
for _, k := range keys {
sorted = append(sorted, m[k])
}
return sorted
}
- 1 回答
- 0 关注
- 225 浏览
添加回答
举报