首页 >后端开发 >Golang >为什么我不能在 Go 中将 `time.Millisecond` 乘以 `int` ?

为什么我不能在 Go 中将 `time.Millisecond` 乘以 `int` ?

DDD
DDD原创
2024-11-12 08:57:02638浏览

Why Can't I Multiply `time.Millisecond` by an `int` in Go?

与 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn