微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Golang这样在atoi.go中处理截止?

如何解决为什么Golang这样在atoi.go中处理截止?

// 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中查看基准。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。