time.NewTimer
Go语言的定时器实质是单向通道,time.Timer结构体类型中有一个time.Time类型的单向chan,源码(src/time/time.go)如下
type Timer struct { C <-chan Time r runtimeTimer }
实例
package main import ( "fmt" "time" ) func main() { t := time.NewTimer(time.Second * 2) //从创建成功就开始计时了 fmt.Println("begin") time.Sleep(2 * time.Second) fmt.Println("sleep end") defer t.Stop() for { <-t.C fmt.Println("timer running...") // 需要重置Reset 使 t 重新开始计时 t.Reset(time.Second * 2) } }
cts@cts-pc:~/test/demo$ go run a.go
begin
sleep end
timer running...
timer running...
timer running...
type Timer struct { C <-chan Time r runtimeTimer }

浙公网安备 33010602011771号