غالباً ما نرغب في تنفيذ كود Go في وقت ما في المستقبل، أو بشكل متكرر في فترات زمنية معينة. ميزات Go المدمجة المؤقت (timer) و المنبه (ticker) تجعل كلا المهمتين سهلتين. سننظر أولاً في المؤقتات ثم في المنبهات (tickers).
package main
import (
"fmt"
"time"
)
func main() {
تمثل المؤقتات حدثاً واحداً في المستقبل. تخبر المؤقت كم من الوقت تريد الانتظار، ويوفر قناة سيتم الإخطار عليها في ذلك الوقت. هذا المؤقت سينتظر ثانيتين.
timer1 := time.NewTimer(2 * time.Second)
السطر <-timer1.C يعيق التنفيذ على قناة المؤقت C حتى يرسل قيمة تشير إلى أن المؤقت قد انطلق.
<-timer1.C
fmt.Println("انطلق المؤقت 1")
إذا كنت تريد الانتظار فقط، كان بإمكانك استخدام time.Sleep. أحد أسباب فائدة المؤقت هو أنه يمكنك إلغاء المؤقت قبل انطلاقه. إليك مثال على ذلك.
timer2 := time.NewTimer(time.Second)
go func() {
<-timer2.C
fmt.Println("انطلق المؤقت 2")
}()
stop2 := timer2.Stop()
if stop2 {
fmt.Println("تم إيقاف المؤقت 2")
}
أعطِ timer2 وقتاً كافياً للانطلاق، لو كان سيفعل، لإظهار أنه قد توقف بالفعل.
time.Sleep(2 * time.Second)
}
تشغيل البرنامج:
$ go run timers.go
انطلق المؤقت 1
تم إيقاف المؤقت 2 المثال التالي: المنبهات (Tickers).