// 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 + 1
和 maxUint64/16 + 1
只引用常量,编译器可以计算这个。结果是每次调用 ParseUint
时都不需要在运行时进行除法运算。您可以在 commit 中查看基准测试。
关于go - 为什么 Golang 在 atoi.go 中像这样处理截止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64112556/