0Pricing
Go Academy · Pelajaran

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 setiap d pada saluran C
  • Selalu gunakan defer ticker.Stop() untuk menghindari kebocoran
  • Penghitung detak membuang detak saat pekerjaan lambat, bukan memicunya secara bertubi-tubi
  • Gunakan Reset untuk 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

  1. Penjadwalan Berbasis Waktu
  2. Pustaka robfig/cron
  3. Ticker untuk Interval
  4. Penghentian Job yang Mulus
← Kembali ke Go Academy