我正在尝试实现随机时间睡眠(在Golang中)
r := rand.Intn(10)
time.Sleep(100 * time.Millisecond) //working
time.Sleep(r * time.Microsecond) // Not working (mismatched types int and time.Duration)
答案 0 :(得分:27)
将参数类型与time.Sleep
匹配:
time.Sleep(time.Duration(r) * time.Microsecond)
这是有效的,因为time.Duration
的基础类型为int64
:
type Duration int64
答案 1 :(得分:2)
如果您尝试多次运行相同的rand.Intn,输出中将始终显示相同的数字
就像它在官方文档https://golang.org/pkg/math/rand/中写的
诸如Float64和Int之类的顶级函数使用默认的共享源,该源每次运行程序时都会产生确定的值序列。如果每次运行需要不同的行为,请使用Seed函数初始化默认的Source。
它看起来应该像
rand.Seed(time.Now().UnixNano())
r := rand.Intn(100)
time.Sleep(time.Duration(r) * time.Millisecond)