亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Google Go Lang分配順序

Google Go Lang分配順序

Go
慕森王 2021-05-05 09:49:38
讓我們看下面的Go代碼:package mainimport "fmt"type Vertex struct {    Lat, Long float64}var m map[string]Vertexfunc 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}]為什么修改很少會影響我的地圖順序?
查看完整描述

2 回答

?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

映射的“順序”取決于所使用的哈希函數。哈希函數被隨機化,以防止使用哈希沖突的拒絕服務攻擊。有關詳細信息,請參見問題跟蹤器:

http://code.google.com/p/go/issues/detail?id=2630

根據規范不能保證地圖順序。盡管在當前的go實現中尚未完成,但將來的實現可能會在GC或其他操作期間進行某些壓縮,這些操作會更改映射的順序,而無需通過代碼修改映射。假定規范中未定義屬性是不明智的。

映射是一種無序的一組元素,稱為元素類型,由一組另一種類型的唯一鍵(稱為鍵類型)索引。


查看完整回答
反對 回復 2021-05-17
  • 2 回答
  • 0 關注
  • 255 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號