我不明白time.Duration在Go中分割a是什么意思。
例如,这非常可爱:
d,_ := time.ParseDuration("4s")
fmt.Println(d/4)
Run Code Online (Sandbox Code Playgroud)
打印1s。这是ace,因为(天真的)4秒除以4是1秒。
但是,当我们发现分母中的4必须是一个持续时间时,就会有些困惑。因此,尽管:
d1 := time.Duration(4)
fmt.Println(d/d1)
Run Code Online (Sandbox Code Playgroud)
也可以打印1s,我们知道d1实际上是这样4ns,我完全不相信4秒除以4纳秒就是1秒。
我很困惑,因为持续时间除以持续时间应该是无量纲的(我想是吧?),而持续时间除以无量纲的数字应该具有时间单位。
而且我知道!=单位的类型,但是我显然误会了某些东西,或者很可能是一组东西。任何帮助清除此问题的方法将不胜感激!
这是上述示例的游戏场。https://play.golang.org/p/Ny2_ENRlX6。仅出于上下文考虑,我试图计算事件之间的平均时间。我可以退一步使用浮子几秒钟,但是我试图留在time.Duration陆地上。
从数学上讲,你是正确的:除以两个时间。持续时间应该导致一个无量纲的数量。但这不是 go 的类型系统的工作原理。任何数学运算都会产生与输入相同类型的值。您必须将除法结果显式转换为 int64 以获得“无类型”数量。