Go 定时器:延时触发器如何使用?

19 min read

在Go语言中,我们可以通过time包中的NewTimer()函数和time.After()函数来创建定时器。其中,NewTimer()函数返回一个定时器对象,你可以通过该对象的C属性读取定时器到期的时间点;而time.After()函数返回一个等待定时器到期的通道。

以下是一个使用NewTimer()函数的例子:

package main

import (
    "fmt"
    "time"
)

func main() {
    timer1 := time.NewTimer(2 * time.Second)
    <-timer1.C
    fmt.Println("Timer 1 expired")
}

在上面的代码中,我们创建了一个定时器对象timer1,并设置其到期时间为两秒后。通过读取timer1.C通道,我们在定时器到期时会立即收到一个通知。

我们还可以使用time.After()函数来创建一个定时器,它会返回一个到期时间通道:


package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("Waiting for 2 seconds...")
    <-time.After(2 * time.Second)
    fmt.Println("Done.")
}

使用time.After()函数来创建一个定时器需要注意的是,你需要等待并接收到通道的一个值,否则定时器就会一直阻塞下去。因此,在上面的例子中,我们使用了一个无限循环来等待定时器到期。