0
我對ioutil
軟件包中的這行代碼的作用感到困惑。它似乎將兩次相同的值進行比較,但在一側投射兩次。任何見解將不勝感激!比較ioutil包中的相同值嗎?
int64(int(capacity)) == capacity
這個函數
func readAll(r io.Reader, capacity int64) (b []byte, err error) {
var buf bytes.Buffer
// If the buffer overflows, we will get bytes.ErrTooLarge.
// Return that as an error. Any other panic remains.
defer func() {
e := recover()
if e == nil {
return
}
if panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge {
err = panicErr
} else {
panic(e)
}
}()
if int64(int(capacity)) == capacity {
buf.Grow(int(capacity))
}
_, err = buf.ReadFrom(r)
return buf.Bytes(), err
}
這是檢查整數溢出。 –
Ahh我看到了,謝謝 –
一個小技術細節:'但是投了兩次 - Go不做類型轉換,只轉換類型。 – Flimzy