Go 地圖列印亂序
在Go 中,地圖是使用雜湊表實現的,雜湊表以非有序的方式維護鍵值對。 - 訂購時尚。因此,迭代地圖並不能保證返回鍵或值的順序。
為什麼地圖列印不依序?
中根據提供的代碼,地圖月份是使用表示月份數字和相應名稱的鍵值對定義的。使用範圍迭代地圖時,列印輸出的順序基於哈希表的內部實現,該表通常針對效能而不是順序進行最佳化。
如何修復順序
有幾種方法可以保證map迭代的順序:
1.使用有序映射:
Go 沒有內建的有序映射類型,但有第三方函式庫提供此功能。其中一個函式庫是「github.com/golang/collections#OrderedMap。」
import "github.com/golang/collections#OrderedMap" func main() { m := collections.NewOrderedMap() m.Set(1, "January") // ... for _, month := range m.Keys() { fmt.Println(month, "-", m.Get(month)) } }
2.對映射鍵進行排序:
另一個選擇是對映射鍵進行排序:
func main() { keys := make([]int, 0, len(months)) for k := range months { keys = append(keys, k) } sort.Ints(keys) for _, k := range keys { fmt.Println(k, "-", months[k]) } }
以上是為什麼Go Map迭代是無序的,如何保證有序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!