溫馨提示×

Go語言定時器如何設置回調(diào)

小樊
81
2024-11-02 17:05:31
欄目: 編程語言

在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ā)的事件。

0