Golang Sleep Random Time
Alex Garella
27 April 2022
If you ever wondered how to sleep a random number of seconds with Go there is a simple way to do that. You can combine the math/rand package with the time package
package main
import (
"fmt"
"time"
"math/rand"
)
func main() {
rand.Seed(time.Now().UnixNano())
n := rand.Intn(10) // n will be between 0 and 10
fmt.Printf("Sleeping %d seconds...\n", n)
time.Sleep(time.Duration(n)*time.Second)
fmt.Println("Done")
} Here is the expected output
Sleeping 4 seconds...
Done As explained already in this article in order to use the rand.Intn function you first need to initialise the source with rand.Seed. Which in this case is being initialised with the current time expressed in microseconds
In the example above in order to sleep the process for a number of seconds we use time.Sleep. An handy function that comes directly from the Go standard library. We can then specify a duration that can be expressed in different unit of time
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)