0Pricing
Go Academy · Lektion

Ticker für Intervalle

In festen Abständen wiederholen

Ticker für Intervalle ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Wiederholung in einem festen Intervall

Wenn Sie etwas einfach alle N Sekunden ausführen müssen, ist ein Ticker das richtige Werkzeug. Anders als eine Schleife mit Sleep läuft er in einem gleichmäßigen Takt und driftet nicht durch die Ausführungszeit der Arbeit.

Einen Ticker erstellen

time.NewTicker(d) gibt einen Ticker zurück, dessen Kanal C alle d die aktuelle Zeit empfängt.

ticker := time.NewTicker(time.Second)
defer ticker.Stop()

Einen Ticker immer anhalten

Ein Ticker hält intern einen Timer aktiv. Wenn Sie nie Stop() aufrufen, entsteht ein Leak. Verwenden Sie direkt nach dem Erstellen defer ticker.Stop().

Über den Kanal iterieren

Sie können mit einer range-Schleife über den Ticker-Kanal iterieren, um auf jeden Takt zu reagieren.

for t := range ticker.C {
    fmt.Println("tick at", t)
}

Mit select anhalten

Kombinieren Sie den Ticker mit einem Done-Kanal, damit die Schleife sauber beendet werden kann.

for {
    select {
    case <-ticker.C:
        doWork()
    case <-done:
        return
    }
}

Ticker oder Timer

Der entscheidende Unterschied:

  • Timer wird nach einer Verzögerung einmal ausgelöst
  • Ticker wird wiederholt in einem bestimmten Intervall ausgelöst

Verwenden Sie einen Timer für einmalige Timeouts und einen Ticker für regelmäßige Aufgaben.

Die praktische Funktion time.Tick

time.Tick(d) gibt nur den Kanal zurück. Das ist praktisch, kann aber nicht angehalten werden und führt daher in langlebigen Programmen zu einem Leak. Verwenden Sie außerhalb kurzer Skripte bevorzugt NewTicker.

for range time.Tick(time.Second) {
    // simple, but cannot Stop -> avoid in servers
}

Umgang mit langsamer Arbeit

Wenn Ihre Arbeit länger als das Intervall dauert, werden die Takte nicht in eine Warteschlange gestellt. Der Ticker verwirft Takte, statt sie anschließend gebündelt auszulösen. Sie erhalten also nie einen Rückstau, können unter hoher Last aber einzelne Takte verpassen.

Die Rate anpassen

Um das Intervall zu ändern, erstellen Sie einen neuen Ticker. Go 1.15+ bietet außerdem ticker.Reset(d), um den Zeitraum ohne erneute Speicherzuweisung zu ändern.

ticker.Reset(500 * time.Millisecond)

Abbruch mit Context

In realen Diensten sollten Sie Ticker-Schleifen mit einem context.Context steuern, damit sie bei einem Shutdown ordnungsgemäß beendet werden.

case <-ctx.Done():
    return ctx.Err()

Ausführbar: Ticker mit fester Rate

Dieses eigenständige Programm erzeugt in einem festen Intervall drei Takte und beendet sich anschließend mithilfe eines Zählers sauber.

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")
}

Kurzer Test

Testen Sie Ihr Verständnis von Tickern.

Zusammenfassung

Sie haben Ticker für Intervalle kennengelernt:

  • time.NewTicker(d) wird auf seinem Kanal C alle d ausgelöst
  • Verwenden Sie immer defer ticker.Stop(), um Leaks zu vermeiden
  • Ticker verwerfen bei langsamer Arbeit Takte, statt sie anschließend gebündelt auszulösen
  • Verwenden Sie Reset, um die Rate zu ändern, und einen Context- oder Done-Kanal zum Beenden

Häufig gestellte Fragen

Ist die Lektion „Ticker für Intervalle“ kostenlos?

Ja — der vollständige Text von „Ticker für Intervalle“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Ticker für Intervalle“?

In festen Abständen wiederholen Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Ticker für Intervalle“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Zeitbasierte Planung
  2. Die robfig/cron-Bibliothek
  3. Ticker für Intervalle
  4. Geordnetes Beenden von Jobs
← Zurück zu Go Academy