1. Time
Go的Time函数库用于实现周期性调用某个函数。
periodlycall.go实现了周期性调用函数function(),比如每秒调用一次函数function()。
1.1. 方法一
package main
import (
"fmt"
"time"
)
func periodlycall(d time.Duration, f func(time.Time)) {
for x := range time.Tick(d) {
f(x)
}
}
func function(t time.Time) {
fmt.Printf("%v: Hello, World \n", t)
}
func main() {
periodlycall(1000*time.Millisecond, function)
}
解释执行。
# go run periodlycall.go
2019-05-23 07:45:13.567121692 +0000 UTC m=+1.000460791: Hello, World
2019-05-23 07:45:14.567131059 +0000 UTC m=+2.000470157: Hello, World
2019-05-23 07:45:15.567173671 +0000 UTC m=+3.000512773: Hello, World
2019-05-23 07:45:16.567128114 +0000 UTC m=+4.000467201: Hello, World
2019-05-23 07:45:17.567059872 +0000 UTC m=+5.000398958: Hello, World
2019-05-23 07:45:18.567239709 +0000 UTC m=+6.000578788: Hello, World
2019-05-23 07:45:19.567059851 +0000 UTC m=+7.000398930: Hello, World
2019-05-23 07:45:20.56705725 +0000 UTC m=+8.000396336: Hello, World
2019-05-23 07:45:21.567058003 +0000 UTC m=+9.000397082: Hello, World
1.2. 方法二
package main
import (
"fmt"
"time"
)
func function() {
fmt.Println("Hello, World")
}
func periodlycall() {
for {
time.Sleep(10*time.Millisecond)
function()
}
}
func main() {
periodlycall()
}
解释执行。
# go run periodlycall2.go
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
Hello, World
参考资料
[1. Go语言Time库的应用] https://play.golang.org/p/Rgc_UDvHv6a