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

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

go 如何計算映射中鍵的哈希值?

go 如何計算映射中鍵的哈希值?

Go
喵喔喔 2022-01-17 10:46:19
Go 如何計算映射中鍵的哈希值?它真的是獨一無二的嗎?是否可以在其他結構中使用?我想像int或不可變的原始鍵很容易,string但對于復合結構來說似乎并不簡單。
查看完整描述

2 回答

?
翻翻過去那場雪

TA貢獻2065條經驗 獲得超14個贊

  1. 語言規范沒有說,這意味著它可以隨時自由更改,或者在實現之間有所不同。

  2. 哈希算法在類型和平臺之間有所不同。截至目前:在 x86(32 位或 64 位)上,如果 CPU 支持 AES 指令,則運行時使用aeshash基于 AES 原語構建的散列,否則它使用“受”xxHash 和 cityhash 啟發的函數,但兩者都不同。32 位和 64 位系統有不同的變體。大多數類型使用其內存內容的簡單散列,但浮點類型具有代碼以確保 0 和 -0 散列相等(因為它們比較相等)和 NaN 隨機散列(因為兩個 NaN 永遠不相等)。由于復雜類型是從浮點數構建的,因此它們的散列由它們的兩個浮點部分的散列組成。并且接口的散列是存儲在接口中的值的散列,而不是接口標頭本身。

  3. 所有這些東西都在私有函數中,所以不,你不能在你自己的代碼中訪問 Go 的內部哈希值。


查看完整回答
反對 回復 2022-01-17
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

Go 地圖實現使用一個名為aeshash. 它不是 AES,但它使用 aesenc 匯編指令來計算哈希。此哈希不會導出以在標準庫中使用。

哈希本身是用匯編編寫的,可以在運行時包源中找到。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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