Menu
Coddy logo textTech

Zusammenfassung – Einfacher Timer

Teil des Abschnitts Logik & Ablauf der GO-Journey von Coddy — Lektion 65 von 68.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

challenge icon

Aufgabe

Einfach

Erstellen Sie eine Countdown-Timer-Anwendung, die time.NewTicker verwendet, um von einer festgelegten Dauer auf Null herunterzuzählen und dabei in regelmäßigen Abständen Fortschrittsmeldungen anzuzeigen. Diese Herausforderung testet Ihre Fähigkeit, Ticker, Schleifen und Dauerberechnungen zu kombinieren, um eine funktionale Timing-Anwendung zu erstellen.

Sie erhalten zwei Eingaben:

  • Einen String, der die Countdown-Dauer im Format "value:unit" enthält (z. B. "10:Second" oder "3:Minute")
  • Einen String, der das Aktualisierungsintervall im Format "value:unit" enthält (z. B. "1:Second")

Ihre Aufgabe ist es:

  1. Die erste Eingabe zu parsen, indem Sie sie am Doppelpunkt trennen, um den Wert und die Einheit der Countdown-Dauer zu extrahieren
  2. Die zweite Eingabe zu parsen, indem Sie sie am Doppelpunkt trennen, um den Wert und die Einheit des Aktualisierungsintervalls zu extrahieren
  3. Die String-Werte mit dem Paket strconv in Ganzzahlen umzuwandeln
  4. time.Duration-Objekte sowohl für die Countdown-Dauer als auch für das Aktualisierungsintervall unter Verwendung der entsprechenden Konstanten zu erstellen:
    • Für "Second": Multiplikation mit time.Second
    • Für "Minute": Multiplikation mit time.Minute
    • Für "Hour": Multiplikation mit time.Hour
  5. Den Timer-Header anzuzeigen: "=== COUNTDOWN TIMER ==="
  6. Das Timer-Setup anzuzeigen: "Starting countdown from [countdown_duration_object]"
  7. Die Aktualisierungsfrequenz anzuzeigen: "Updates every [update_interval_object]"
  8. Einen Ticker mit time.NewTicker und der Dauer des Aktualisierungsintervalls zu erstellen
  9. Eine Variable für die verbleibende Zeit mit der Countdown-Dauer zu initialisieren
  10. Eine Schleife zum Herunterzählen zu verwenden:
    • Auf jedes Ticker-Ereignis mit <-ticker.C warten
    • Das Aktualisierungsintervall von der verbleibenden Zeit subtrahieren
    • Wenn die verbleibende Zeit größer als 0 ist, anzeigen: "Time remaining: [remaining_time_object]"
    • Wenn die verbleibende Zeit 0 oder weniger beträgt, anzeigen: "Time's up!" und die Schleife verlassen
  11. Den Ticker mit ticker.Stop() stoppen
  12. Abschlussstatistiken anzeigen:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (berechnen Sie, wie oft die verbleibende Zeit angezeigt wurde)
  13. Die Abschlussmeldung anzeigen: "Countdown timer finished successfully"

Verwenden Sie das Paket time für Ticker- und Dauer-Operationen, das Paket strings zum Trennen von Eingabestrings, das Paket strconv zum Umwandeln von Strings in Ganzzahlen und das Paket fmt für die Ausgabe. Denken Sie daran, dass time.NewTicker einen Ticker zurückgibt, der in regelmäßigen Abständen Werte über seinen Kanal sendet, und dass Sie ticker.Stop() aufrufen müssen, wenn Sie fertig sind, um Ressourcen freizugeben. Diese Herausforderung zeigt, wie man einen praktischen Countdown-Timer mit den Timing-Mechanismen von Go erstellt.

Probier es selbst

package main

import (
	"fmt"
	"strconv"
	"strings"
	"time"
)

func main() {
	// Eingabe lesen
	var countdownInput string
	var intervalInput string
	fmt.Scanln(&countdownInput)
	fmt.Scanln(&intervalInput)
	
	// Countdown-Dauer-Eingabe parsen
	countdownParts := strings.Split(countdownInput, ":")
	countdownValue, _ := strconv.Atoi(countdownParts[0])
	countdownUnit := countdownParts[1]
	
	// Aktualisierungsintervall-Eingabe parsen
	intervalParts := strings.Split(intervalInput, ":")
	intervalValue, _ := strconv.Atoi(intervalParts[0])
	intervalUnit := intervalParts[1]
	
	// TODO: Schreiben Sie Ihren Code unten
	// Mit Switch-Anweisungen in time.Duration-Objekte umwandeln
	// Den Countdown-Timer erstellen (für Tests ohne tatsächliche Verzögerungen simulieren)
	// Die Countdown-Schleife implementieren
	// Alle erforderlichen Meldungen und Statistiken anzeigen
	// Hinweis: Simulieren Sie zu Testzwecken das Ticker-Verhalten ohne echte Zeitverzögerungen
	
}

Alle Lektionen in Logik & Ablauf