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

为了测试并发 goroutines,我在一个函数中添加了一行,使它需要一个随机的时间来返回(最多一秒)

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

但是,当我编译时,出现此错误

.\crawler.go:49: 无效操作:rand.Int31n(1000) * time.Millisecond(int32 和 time.Duration 类型不匹配)

有任何想法吗?如何乘以持续时间?


小唯快跑啊
浏览 213回答 3
3回答

肥皂起泡泡

int32并且time.Duration是不同的类型。您需要将 转换int32为 a time.Duration:time.Sleep(time.Duration(rand.Int31n(1000)) * time.Millisecond)

慕运维8079593

您必须将其转换为正确的格式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 表示持续时间。但是如果你传递一个变量,你应该强制转换它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go