Mengenal Package Timer Pada Golang
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 inisialisasidelayproses dengan satuan tertentu biasanya kita bisa tambahkantime.Secondtime.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.
1func main() {
2 timer := time.NewTimer(5 * time.Second)
3 fmt.Println(time.Now())
4
5 time := <-timer.C
6 fmt.Println(time)
7}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.1✗ go run app.go
22023-07-14 19:31:12.30003 +0700 WIB m=+0.000059626
32023-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:
1func main() {
2 fmt.Println(time.Now())
3 channel := time.After(5 * time.Second)
4
5 tick := <-channel
6 fmt.Println(tick)
7}Hasilnya akan sama seperti penggunaan time.NewTimer
1✗ go run app.go
22023-07-14 19:43:02.209571 +0700 WIB m=+0.000136293
32023-07-14 19:43:07.211192 +0700 WIB m=+5.00188Dan 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
1func main() {
2 group := sync.WaitGroup{}
3 group.Add(1)
4
5 time.AfterFunc(5*time.Second, func() {
6 fmt.Println(time.Now())
7 fmt.Println("Execute after 5 seconds")
8 group.Done()
9 })
10
11 fmt.Println(time.Now())
12 group.Wait()
13}1✗ go run app.go
22023-07-14 19:48:25.971889 +0700 WIB m=+0.000073292
32023-07-14 19:48:30.972922 +0700 WIB m=+5.001231959
4Execute after 5 secondsKesimpulan
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.