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

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

對無類型空白標識符的這種分配有什么影響?

對無類型空白標識符的這種分配有什么影響?

Go
慕容森 2023-07-04 17:07:17
我在中找到了以下代碼crypto/sha256/sha256.go:func putUint32(x []byte, s uint32) {    _ = x[3]    x[0] = byte(s >> 24)    x[1] = byte(s >> 16)    x[2] = byte(s >> 8)    x[3] = byte(s)}len(x)我所看到的是,如果不是至少 4,對空白標識符的這種分配會造成恐慌,這甚至不是分配的影響,而是對 的評估的影響x[3]。那么,下面的(更短、更理想的代碼)不是等效的嗎?func putUint32(x []byte, s uint32) {    x[3] = byte(s)    x[2] = byte(s >> 8)    x[1] = byte(s >> 16)    x[0] = byte(s >> 24)}如果是的話,為什么不這樣寫呢?
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

賦值_ =本身不執行任何操作,但分配給它的索引表達式用于在許多其他較低索引操作之前訪問切片中所需的最后一個元素。這是一種優化,旨在向編譯器提示該值上的所有較低索引操作都是安全的,并且可以省略邊界檢查。這通常稱為“邊界檢查消除”

不使用后一個示例的主要原因是第二次優化,需要按順序讀取字節,以便編譯器可以將它們合并為多字節加載。


查看完整回答
反對 回復 2023-07-04
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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