理解 Go 映射中的鍵值排序
在 Go 中,映射是鍵值對的無序集合。使用範圍循環迭代映射時,返回鍵和值的順序是不可預測的。此行為源自於地圖的內部實現,它優先考慮效能而不是保留順序。
無序輸出的原因
在您的範例中,地圖月份包含鍵值對,其中鍵是表示月份數字的整數,數值是對應的月份名稱。當您使用範圍循環迭代映射時,Go 運行時會根據映射在記憶體中的組織方式列印鍵值對。然而,這種組織方式可能因一次執行而異,從而導致輸出無序。
保留順序
如果您需要鍵值要按特定順序列印對,您有兩個選項:
1。使用陣列
陣列是一種保持其元素固定順序的資料結構。透過使用已知大小的數組,您可以明確設定鍵值對的順序。以下是範例程式碼:
var months [12]string months[0] = "January" months[1] = "Fabruary" // ... Populate the rest of the array
2.將地圖鍵排序
您也可以在迭代地圖之前對地圖鍵進行排序。這可確保按所需順序列印鍵值對。以下是範例程式碼:
keys := make([]int, 0, len(months)) for key := range months { keys = append(keys, key) } sort.Ints(keys) for _, key := range keys { fmt.Println(key, "-", months[key]) }
透過使用這兩種方法中的任何一種,您可以控制地圖月份的輸出順序。
以上是為什麼迭代 Go Map 時鍵值對的順序無法預測?的詳細內容。更多資訊請關注PHP中文網其他相關文章!