如何在golang中实现随机睡眠

时间:2017-06-14 05:21:53

标签: go random time sleep

我正在尝试实现随机时间睡眠(在Golang中)

r := rand.Intn(10)
time.Sleep(100 * time.Millisecond)  //working 
time.Sleep(r * time.Microsecond)    // Not working (mismatched types int and time.Duration)

2 个答案:

答案 0 :(得分:27)

将参数类型与time.Sleep匹配:

time.Sleep(time.Duration(r) * time.Microsecond)

这是有效的,因为time.Duration的基础类型为int64

type Duration int64

文档:https://golang.org/pkg/time/#Duration

答案 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)