在Go語言中,你可以使用time
包中的Timer
類型來創(chuàng)建一個定時器,并在定時器觸發(fā)時執(zhí)行回調(diào)函數(shù)。以下是一個簡單的示例:
package main
import (
"fmt"
"time"
)
func main() {
// 創(chuàng)建一個定時器,設置5秒后觸發(fā)
timer := time.NewTimer(5 * time.Second)
// 等待定時器觸發(fā)
<-timer.C
// 定時器觸發(fā)后執(zhí)行的回調(diào)函數(shù)
fmt.Println("定時器觸發(fā),執(zhí)行回調(diào)函數(shù)")
}
在這個示例中,我們創(chuàng)建了一個定時器,設置5秒后觸發(fā)。然后我們使用<-timer.C
來阻塞主線程,直到定時器觸發(fā)。當定時器觸發(fā)時,會執(zhí)行回調(diào)函數(shù)(在這個例子中是打印一條消息)。
如果你需要在定時器觸發(fā)之前取消定時器,可以使用timer.Stop()
方法。例如:
package main
import (
"fmt"
"time"
)
func main() {
// 創(chuàng)建一個定時器,設置5秒后觸發(fā)
timer := time.NewTimer(5 * time.Second)
// 在2秒后取消定時器
time.Sleep(2 * time.Second)
timer.Stop()
// 檢查定時器是否已取消
if !timer.Stop() {
// 定時器已經(jīng)觸發(fā),獲取其完成時間
<-timer.C
}
fmt.Println("定時器已取消或已觸發(fā)")
}
在這個示例中,我們在2秒后取消了定時器。如果定時器已經(jīng)被觸發(fā),timer.Stop()
將返回false
,此時我們可以從timer.C
通道中讀取數(shù)據(jù)以處理定時器觸發(fā)的事件。