」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Go Map 迭代順序取決於鍵插入順序嗎?

Go Map 迭代順序取決於鍵插入順序嗎?

發佈於2025-01-14
瀏覽:551

Does Go Map Iteration Order Depend on Key Insertion Order?

Go Maps 中的賦值順序

考慮以下 Go 碼:

package main

import "fmt"

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, 74.39967,
    }
    m["test"] = Vertex{
        12.0, 100,
    }
    fmt.Println(m["Bell Labs"])
    fmt.Println(m)
}

輸出:

{40.68433 74.39967}

map[Bell Labs:{40.68433 74.39967} test:{12 100}]

修改測試頂點聲明,右移「}」4個空格,如下:

m["test"] = Vertex{
    12.0, 100,
}

將輸出改為:

{40.68433 74.39967}

map[test:{12 100} Bell Labs:{40.68433 74.39967}]

解釋:

Go 中的映射「順序」取決於用於防止拒絕服務攻擊。根據 Go 問題追蹤器 (http://code.google.com/p/go/issues/detail?id=2630),根據規範,不保證地圖順序。

根據規範,映射是具有唯一鍵的無序元素組。未來的實作可以更改映射的順序,而無需在程式碼中進行修改。因此,在 Go 中不建議依賴特定的映射順序。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3