按整数的分数休眠

我正在尝试编写一个程序,该程序会在十进制数的随机时间间隔内暂停。


这是不工作的程序:


package main


import (

    "fmt"

    "math/rand"

    "time"

)


var test int


func main() {

    intervalGenerate()

}


func intervalGenerate() {

    var randint float64

    rand.Seed(time.Now().UnixNano())

    randInterval := randFloats(3, 7, 1)

    randint = randInterval[0]

    duration := time.Duration(randint) * time.Second

    fmt.Println("Sleeping for", duration)

    time.Sleep(duration)

    fmt.Println("Resuming")

}


func randFloats(min, max float64, n int) []float64 {

    res := make([]float64, n)

    for i := range res {

        res[i] = min + rand.Float64()*(max-min)

    }

    return res

}

目前生成的随机数介于 3 和 7(包括小数)之间,但 Sleep 会四舍五入到最接近的整数。


据我了解,这失败的原因是因为Sleep需要Duration,这是一个Int64:


func Sleep(d Duration)

有没有办法让程序休眠几分之一秒?


去游乐场: https: //play.golang.org/p/z-dnDBnUfxr


牛魔王的故事
浏览 160回答 1
1回答

狐的传说

根据您需要的粒度级别使用 time.Millisecond、time.Microsecond 或 time.Nanosecond。// sleep for 2.5 secondsmilliseconds := 2500time.Sleep(time.Duration(milliseconds) * time.Millisecond)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go