首頁 > 後端開發 > Golang > 為什麼迭代 Go Map 時鍵值對的順序無法預測?

為什麼迭代 Go Map 時鍵值對的順序無法預測?

Linda Hamilton
發布: 2024-11-27 09:49:10
原創
845 人瀏覽過

Why Is the Order of Key-Value Pairs Unpredictable When Iterating Over Go Maps?

理解 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板