为了测试并发 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)
慕运维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 表示持续时间。但是如果你传递一个变量,你应该强制转换它。
- 3 回答
- 0 关注
- 212 浏览
添加回答
举报
0/150
提交
取消