Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
15 Jul 2023 · 3 mnt baca ·Artikel 25 / 119
Go

Mengenal Package Timer Pada Golang

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

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 inisialisasi delay proses dengan satuan tertentu biasanya kita bisa tambahkan time.Second
  • time.After() digunakan tanpa inisialisasi sehingga lebih ringkas dan diproses untuk melakukan delay setelah time tertentu sudah ditentukan
  • time.AfterFunc() digunakan hampir sama dengan time.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.

go
1func main() {
2	timer := time.NewTimer(5 * time.Second)
3	fmt.Println(time.Now())
4
5	time := <-timer.C
6	fmt.Println(time)
7}
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.
bash
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:

go
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

bash
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.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

go
 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}
Hasil dari proses pada program diatas sebagai berikut.
bash
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 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.

Artikel Terkait

💬 Komentar