在處理 Go 閱讀器以限制通過分段上傳(例如在 Postman 中)發送檔案時從遠程客戶端讀取的位元組數時,我遇到了以下代碼。
r.Body = http.MaxBytesReader(w, r.Body, 32<<20 1024)
如果我沒記錯的話,上面的符號應該代表 33555456 位元組,或者 33.555456 MB (32 * 2 ^ 20) 1024。或者這個數字不正確?
我不明白的是:
- 作者為什么這么用?為什么使用
20而不是其他一些數字? - 為什么作者完全使用了這個符號
1024?他為什么不寫 33 MB 呢? - 將 33555456 直接寫為 int64 可以嗎?
uj5u.com熱心網友回復:
如果我沒記錯的話,上面的符號應該代表 33555456 位元組,或者 33.555456 MB (32 * 2 ^ 20) 1024。或者這個數字不正確?
正確的。你可以自己簡單地檢查一下。
fmt.Println(32<<20 1024)
他為什么不寫 33 MB 呢?
因為這個數字不是 33 MB。33 * 1024 * 1024 = 34603008
將 33555456 直接寫為 int64 可以嗎?
自然。無論如何,這就是它在編譯期間可能會減少的情況。一旦您弄清楚 32、20 和 1024 背后的邏輯,這種表示法可能更容易閱讀。
易于閱讀是為什么我幾乎總是(不使用 ruby?? 時)寫常量,如“50 MB” as50 * 1024 * 1024和“30 days” as30 * 86400等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/343560.html
標籤:走
