首頁 > 後端開發 > Golang > 為什麼Go Map迭代是無序的,如何保證有序?

為什麼Go Map迭代是無序的,如何保證有序?

Susan Sarandon
發布: 2024-12-29 05:20:13
原創
277 人瀏覽過

Why is Go Map Iteration Unordered, and How Can I Guarantee Order?

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

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