Pengenalan package time.Timer
time.Timer
adalah package yang berhubungan dengan waktu atau kejadian yang akan terjadi saat proses dijalankan. Misalkan kita akan memberikan delay
selama beberapa detik untuk menuju ke proses selanjutnya atau ada skema hal lain.
Kenapa kita harus menggunakan time.Timer?
time.Timer
sering digunakan ketika kita ingin proses program kita untuk di eksekusi ke beberapa proses atau hanya satu proses dalam waktu tertentu atau di waktu tertentu saja atau di waktu selanjutnya dengan kurun waktu tertentu, sehingga kita bisa menjadwalkan proses selanjutnya akan dilakukan jeda dengan waktu tertentu semisal 1 second.
Penggunaan Method
Ada beberapa Metode yang bisa kita pakai diantaranya
time.NewTimer()
digunakan untuk inisialisasidelay
proses dengan satuan tertentu biasanya kita bisa tambahkantime.Second
time.After()
digunakan tanpa inisialisasi sehingga lebih ringkas dan diproses untuk melakukan delay setelah time tertentu sudah ditentukantime.AfterFunc()
digunakan hampir sama dengantime.After()
tetapi yang berbeda yaitu fungsi selanjutnya dikirim sebagai param yang nanti akan dilakukan eksekusi
Implementasi dan sampel time.NewTimer
Pada sample dan implementasi yang pertama yaitu kita akan mencetak proses dengan melakukan delay selama 5 detik. Berikut contoh kodenya.
func main() {
timer := time.NewTimer(5 * time.Second)
fmt.Println(time.Now())
time := <-timer.C
fmt.Println(time)
}
Pada kode diatas kita melakukan inisialisasi dengan menggunakan time.New(5*time.Second)
ini dimaksudkan kita akan membuat timer dengan detay
atau jeda selama 5 second sehingga saat kita cetak di proses selanjutnya akan terlihat perbedaan saat dilakukan cetak awal dan cetak akhir waktunya selama 5 detik. Berikut ini hasilnya jika kita eksekusi programnya.
✗ go run app.go
2023-07-14 19:31:12.30003 +0700 WIB m=+0.000059626
2023-07-14 19:31:17.300921 +0700 WIB m=+5.001097376
Selain itu kita juga bisa menggunakan time.After
untuk melakukan delay
terhadap proses dalam program. Ini lebih singkat lagi dan mudah untuk diimplementasikan. Misalkan seperti kode dibawah ini:
func main() {
fmt.Println(time.Now())
channel := time.After(5 * time.Second)
tick := <-channel
fmt.Println(tick)
}
Hasilnya akan sama seperti penggunaan time.NewTimer
✗ go run app.go
2023-07-14 19:43:02.209571 +0700 WIB m=+0.000136293
2023-07-14 19:43:07.211192 +0700 WIB m=+5.00188
Dan yang terakhir kita juga bisa menggunakan method time.AfterFunc()
yang mana ini perbedaannya yaitu melakukan delay
tetapi setelah itu dikirim fungsi apa yang akan dieksekusi setelah kita tambahkan delay
. Berikut contoh kodenya
func main() {
group := sync.WaitGroup{}
group.Add(1)
time.AfterFunc(5*time.Second, func() {
fmt.Println(time.Now())
fmt.Println("Execute after 5 seconds")
group.Done()
})
fmt.Println(time.Now())
group.Wait()
}
Hasil dari proses pada program diatas sebagai berikut.
✗ go run app.go
2023-07-14 19:48:25.971889 +0700 WIB m=+0.000073292
2023-07-14 19:48:30.972922 +0700 WIB m=+5.001231959
Execute after 5 seconds
Kesimpulan
Maka dapat kita pelajari bahwa package time
ini sebenarnya banyak sekali method-method yang biasanya kita perlukan terlebih ketika kita ingin melakukan delay
terhadap suatu proses yang bisa memberikan jeda yang sudah kita tentukan sebelumnya.
Mengenal Dan Implementasi Sync Atomic Pada Golang
Mengenal Package Ticker Pada Golang
Artikel Terhangat
47 Membuat Mutation Login dan Signup
08 Aug 2025
69. Studi Kasus: Retry dan Backoff Strategy
08 Aug 2025
46 Menambahkan Middleware Autentikasi JWT
08 Aug 2025
68. Kompresi Data (gzip) di gRPC
08 Aug 2025
67. Retry Mechanism di Client gRPC
08 Aug 2025
44 Mocking Database untuk Test Resolver
08 Aug 2025
66. Deadline dan Timeout pada gRPC
08 Aug 2025

47 Membuat Mutation Login dan Signup

69. Studi Kasus: Retry dan Backoff Strategy

46 Menambahkan Middleware Autentikasi JWT

68. Kompresi Data (gzip) di gRPC

67. Retry Mechanism di Client gRPC

44 Mocking Database untuk Test Resolver
