[GO]定时器的停止和重置

package main

import (
    "time"
    "fmt"
)

func main() {
    timer := time.NewTimer(3 * time.Second)
    go func() {
        <-timer.C
        fmt.Println("子协程可以打印了,因为定时器的时间到")
    }()

    timer.Stop()
    for true {

    }
}

这段代码执行后不会打印任何东西,因为主协程和子协程的执行几乎是同时的,那么它的打印自然不会被执行。

还有一个重置的例子

package main

import (
    "time"
    "fmt"
)

func main() {
    timer := time.NewTimer(3*time.Second)
    timer.Reset(time.Second)//重置新设置为1s,上面的时间推迟失效
    <-timer.C
    fmt.Println("时间到")
}