为了账号安全,请及时绑定邮箱和手机立即绑定

如何将持续时间乘以整数?

如何将持续时间乘以整数?

Go
小唯快跑啊 2021-06-10 14:17:42
为了测试并发 goroutines,我在一个函数中添加了一行,使它需要一个随机的时间来返回(最多一秒)time.Sleep(rand.Int31n(1000) * time.Millisecond)但是,当我编译时,出现此错误.\crawler.go:49: 无效操作:rand.Int31n(1000) * time.Millisecond(int32 和 time.Duration 类型不匹配)有任何想法吗?如何乘以持续时间?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

int32并且time.Duration是不同的类型。您需要将 转换int32为 a time.Duration

time.Sleep(time.Duration(rand.Int31n(1000)) * time.Millisecond)


查看完整回答
反对 回复 2021-06-21
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

您必须将其转换为正确的格式Playground

yourTime := rand.Int31n(1000)
time.Sleep(time.Duration(yourTime) * time.Millisecond)

如果您检查sleep 的文档,您会看到它需要func Sleep(d Duration)持续时间作为参数。您的rand.Int31n返回int32.

示例中的行有效 ( time.Sleep(100 * time.Millisecond)) 因为编译器足够聪明,可以理解这里的常量100 表示持续时间。但是如果你传递一个变量,你应该强制转换它。


查看完整回答
反对 回复 2021-06-21
  • 3 回答
  • 0 关注
  • 212 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信