gpt4 book ai didi

go - 为什么 Go 常量中不允许使用 `math.Sin`?

转载 作者:数据小太阳 更新时间:2023-10-29 03:43:19 26 4
gpt4 key购买 nike

根据 Effective Go ,函数 math.Sin 不能用于定义常量,因为该函数必须在运行时发生。

此限制背后的原因是什么?浮点一致性? Sin 实现的怪癖?还有别的吗?


其他语言也支持这种事情。在 C 中,例如:从版本 4.3 开始,GCC supports compile-time calculation of the sine function . (请参阅“常规优化器改进”部分)。

但是,如 this blog post by Bruce Dawson 中所述,这可能会导致意想不到的问题。 (请参阅“编译时与运行时 sin”部分)。

这是 Go 中的一个相关问题吗?还是由于其他原因限制了这种使用?

最佳答案

Go 不支持用函数的结果初始化常量。函数在运行时调用,而不是在编译时调用。但是常量是在编译时定义的。

可以为某些函数设置异常(exception)(例如 math.Sin),但这会使规范更加复杂。 Go 开发人员通常更喜欢保持规范简单和一致。

关于go - 为什么 Go 常量中不允许使用 `math.Sin`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55288815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com