Ticker untuk Interval
Ulangi dengan laju tetap
Ticker untuk Interval adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Mengulang pada Laju Tetap
Jika Anda hanya perlu melakukan sesuatu setiap N detik, penghitung detak adalah alat yang tepat. Berbeda dari perulangan tidur, alat ini memicu tindakan dengan irama tetap dan tidak bergeser akibat durasi pekerjaan.
Membuat Penghitung Detak
time.NewTicker(d) mengembalikan penghitung detak yang salurannya C menerima waktu saat ini setiap d.
ticker := time.NewTicker(time.Second)
defer ticker.Stop()Selalu Hentikan Penghitung Detak
Penghitung detak membuat pengatur waktu internal tetap aktif. Jika Anda tidak pernah memanggil Stop(), akan terjadi kebocoran. Gunakan defer ticker.Stop() segera setelah membuatnya.
Melakukan Perulangan pada Saluran
Anda dapat melakukan perulangan pada saluran penghitung detak untuk merespons setiap detak.
for t := range ticker.C {
fmt.Println("tick at", t)
}Menghentikan dengan Pemilihan
Gabungkan penghitung detak dengan saluran selesai agar perulangan dapat keluar dengan rapi.
for {
select {
case <-ticker.C:
doWork()
case <-done:
return
}
}Penghitung Detak vs Pengatur Waktu
Perbedaan utamanya:
- Pengatur waktu terpicu sekali setelah penundaan
- Penghitung detak terpicu berulang kali pada interval tertentu
Gunakan pengatur waktu untuk batas waktu sekali jalan dan penghitung detak untuk pekerjaan berkala.
Kemudahan time.Tick
time.Tick(d) hanya mengembalikan salurannya. Ini praktis, tetapi tidak dapat dihentikan, sehingga akan mengalami kebocoran jika digunakan dalam program yang berjalan lama. Pilih NewTicker daripada ini di luar skrip singkat.
for range time.Tick(time.Second) {
// simple, but cannot Stop -> avoid in servers
}Menangani Pekerjaan yang Lambat
Jika pekerjaan Anda memerlukan waktu lebih lama daripada intervalnya, detak tidak diantrekan; penghitung detak membuang detak alih-alih memicunya secara bertubi-tubi. Jadi, Anda tidak pernah mendapatkan antrean tertunda, tetapi mungkin melewatkan detak saat beban tinggi.
Menyesuaikan Laju
Untuk mengubah interval, buat penghitung detak baru. Go 1.15+ juga menyediakan ticker.Reset(d) untuk mengubah periode tanpa mengalokasikan ulang.
ticker.Reset(500 * time.Millisecond)Pembatalan Konteks
Dalam layanan nyata, jalankan perulangan penghitung detak dengan context.Context agar sinyal penghentian dapat menghentikannya dengan baik.
case <-ctx.Done():
return ctx.Err()Dapat Dijalankan: Penghitung Detak Berlaju Tetap
Program mandiri ini menghasilkan detak tiga kali pada interval tetap, lalu berhenti dengan rapi menggunakan penghitung.
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(10 * time.Millisecond)
defer ticker.Stop()
count := 0
for range ticker.C {
count++
fmt.Println("tick", count)
if count == 3 {
break
}
}
fmt.Println("done")
}Pemeriksaan Singkat
Uji pemahaman Anda tentang penghitung detak.
Ringkasan
Anda telah mempelajari penghitung detak untuk interval:
time.NewTicker(d)terpicu setiapdpada saluranC- Selalu gunakan
defer ticker.Stop()untuk menghindari kebocoran - Penghitung detak membuang detak saat pekerjaan lambat, bukan memicunya secara bertubi-tubi
- Gunakan
Resetuntuk mengubah laju dan konteks/saluran selesai untuk keluar
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Ticker untuk Interval” gratis?
Ya — teks lengkap “Ticker untuk Interval” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Ticker untuk Interval”?
Ulangi dengan laju tetap Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Ticker untuk Interval” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Penjadwalan Berbasis Waktu
- Pustaka robfig/cron
- Ticker untuk Interval
- Penghentian Job yang Mulus