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 關注
- 265 瀏覽
添加回答
舉報