gpt4 book ai didi

go - 为什么在 Go 中划分两个 time.durations 会导致另一个 time.duration?

转载 作者:IT王子 更新时间:2023-10-29 01:24:41 28 4
gpt4 key购买 nike

我不明白在 Go 中划分一个 time.Duration 是什么意思。

例如,这是 super 可爱的:

d,_ := time.ParseDuration("4s")
fmt.Println(d/4)

打印1s。这是王牌,因为(天真地)4 秒除以 4 是 1 秒。

当我们发现分母中的 4 必须是一个持续时间时,它会变得有点困惑。所以虽然:

d1 := time.Duration(4)
fmt.Println(d/d1)

还打印 1s,我们知道 d1 实际上是 4ns 而我完全不相信 4 秒除以 4 纳秒就是 1第二。

我很困惑,因为持续时间除以持续时间应该是无量纲的(我认为,对吧?),而持续时间除以无量纲数应该有时间单位。

我知道 type != unit,但我显然误解了某些东西,或者很可能是一组东西。任何有助于解决这个问题的帮助将不胜感激!

这是上述示例的围棋 Playground 。 https://play.golang.org/p/Ny2_ENRlX6 .只是为了上下文,我正在尝试计算事件之间的平均时间。我可以退回到使用 float 几秒钟,但我试图留在 time.Duration 土地上。

最佳答案

从数学上讲,您是正确的:将两个时间相除。持续时间应该导致无量纲的数量。但这不是 go 的类型系统的工作方式。任何数学运算都会产生与输入类型相同的值。您必须将除法的结果显式转换为 int64 以获得“未类型化”的数量。

关于go - 为什么在 Go 中划分两个 time.durations 会导致另一个 time.duration?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29099275/

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