// code in atoi.go, line 90
var cutoff uint64
switch base {
case 10:
    cutoff = maxUint64/10 + 1
case 16:
    cutoff = maxUint64/16 + 1
default:
    cutoff = maxUint64/uint64(base) + 1
}
我在Golang包的atoi.go文件中看到了一些代码,为什么不像下面这样写?
var cutoff = maxUint64/uint64(base) + 1
非常感谢。

最佳答案

我认为您所指的 comment above 行可以回答您的问题:

因为 maxUint64/10 + 1maxUint64/16 + 1 只引用常量,编译器可以计算这个。结果是每次调用 ParseUint 时都不需要在运行时进行除法运算。您可以在 commit 中查看基准测试。

关于go - 为什么 Golang 在 atoi.go 中像这样处理截止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64112556/

10-10 22:34