Go语言(https://github.com/golang/go/blob/master/src/io/ioutil/ioutil.go#L18-L38)中有一个功能。具体来说,这个分支对我来说似乎是多余的:
if int64(int(capacity)) == capacity {
buf.Grow(int(capacity))
}
capacity
从未修改过,该函数似乎不是递归的。这是骗人的编译器吗?
最佳答案
io.ReadAll
的Capacity参数的类型为int64
。 *bytes.Buffer
的Grow
的参数为int
。因此,我们必须将输入的int64
缩小为(也许)32位。结果可能与原始int64
值不同。如果不是,我们将跳过该调用(尽管我可能会争辩说我们应该尝试将缓冲区增大到最大int
值,或者(可能更好)只是直接返回错误)。
关于go - 这是Go中的编译器技巧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59276302/