Golang : Call a function after some delay(time.Sleep and Tick)
Tags : golang time delay sleep tick
Long time ago when I started learning Turbo Pascal by myself. One of the few functions that I'd learned is the delay()
function. Ah... those days..very nostalgic.
Anyway, these programs below will show you how to call a function after some delay. First example uses the time.Sleep()
function and the second example uses the time.Tick()
function.
Example 1:
package main
import (
"fmt"
"time"
)
func delaySecond(n time.Duration) {
time.Sleep(n * time.Second)
}
func delayMinute(n time.Duration) {
time.Sleep(n * time.Minute)
}
func main() {
fmt.Println("starts")
delaySecond(3) // delay 3 seconds
fmt.Println("after 3 second")
delayMinute(1) // delay 1 minute
fmt.Println("after 1 minute delay... now get back to work!")
}
Example 2 - For polling after 5 seconds
package main
import (
"fmt"
"time"
)
func echo(s string) {
fmt.Println(s)
}
func delaySecond(n time.Duration) {
for _ = range time.Tick(n * time.Second) {
str := "Hi! " + n.String() + " seconds have passed"
echo(str)
}
}
func main() {
go delaySecond(5) // very useful for interval polling
select {} // this will cause the program to run forever
}
The reason second example used the time.Tick()
function is because time.Sleep()
function will cause this error :
fatal error: all goroutines are asleep - deadlock!
Output : see http://play.golang.org/p/W3EYOHA-YS
Reference :
https://groups.google.com/forum/#!topic/golang-nuts/W1KJQr35NE0
Tags : golang time delay sleep tick
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+1.8k Golang : Handling Yes No Quit query input
+4.7k Javascript : Prompt confirmation before exit
+14.4k Golang : Calculate future date with time.Add() function
+1.7k Linux/MacOSX : Search for files by filename and extension with find command
+3.5k nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
+3.7k Golang : Detect user location with HTML5 geo-location
+12.3k Golang : Append content to a file
+2.9k Nginx : How to block user agent ?
+4.3k Golang : unknown escape sequence error
+4.4k Golang : Create matrix with Gonum Matrix package example
+3.1k Android Studio : Password input and reveal password example