与 time.Millisecond * int 的混淆
在 Go 中,运算符需要相同类型的操作数,除非操作涉及移位或无类型常量。否则,如果一个操作数是无类型常量(例如整数文字),它将转换为另一操作数的类型。
考虑以下示例:
// Works because 1000 is an untyped constant and is converted to `time.Duration`. time.Sleep(1000 * time.Millisecond)
但是,以下代码失败:
// Fails because `v` is an `int` and `time.Duration` are different types. var v = 1000 time.Sleep(v * time.Millisecond)
要解决此问题,请在使用之前将 int 变量 v 转换为 time.Duration在 Sleep 函数中:
time.Sleep(time.Duration(v) * time.Millisecond)
此转换使操作数类型相同,从而允许操作成功。
以上是为什么我不能在 Go 中将 `time.Millisecond` 乘以 `int` ?的详细内容。更多信息请关注PHP中文网其他相关文章!