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