首页 > 后端开发 > Golang > 正文

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

DDD
发布: 2024-11-12 08:57:02
原创
591 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板