Menu
Coddy logo textTech

Zusammenfassung – Einfacher Timer

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

challenge icon

Aufgabe

Einfach

Erstelle eine Countdown-Timer-Anwendung, die time.NewTicker verwendet, um von einer angegebenen Dauer bis auf null herunterzuzählen und in regelmäßigen Abständen Fortschrittsmeldungen anzuzeigen. Diese Herausforderung testet deine Fähigkeit, Ticker, Schleifen und Dauerberechnungen zu kombinieren, um eine funktionierende Zeitmessanwendung zu erstellen.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette mit der Countdown-Dauer im Format "value:unit" (z. B. "10:Second" oder "3:Minute")
  • Eine Zeichenkette mit dem Aktualisierungsintervall im Format "value:unit" (z. B. "1:Second")

Deine Aufgabe ist es:

  1. Die erste Eingabe durch Aufteilen an Doppelpunkten zu analysieren, um den Wert und die Einheit der Countdown-Dauer zu extrahieren
  2. Die zweite Eingabe durch Aufteilen an Doppelpunkten zu analysieren, um den Wert und die Einheit des Aktualisierungsintervalls zu extrahieren
  3. Die Zeichenkettenwerte mithilfe des Pakets strconv in Ganzzahlen umzuwandeln
  4. time.Duration-Objekte sowohl für die Countdown-Dauer als auch für das Aktualisierungsintervall mithilfe der entsprechenden Konstanten zu erstellen:
    • Für "Second": mit time.Second multiplizieren
    • Für "Minute": mit time.Minute multiplizieren
    • Für "Hour": mit time.Hour multiplizieren
  5. Die Timer-Kopfzeile anzuzeigen: "=== COUNTDOWN TIMER ==="
  6. Die Timer-Konfiguration 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:
    • Mit <-ticker.C auf jedes Ticker-Ereignis zu warten
    • Das Aktualisierungsintervall von der verbleibenden Zeit abzuziehen
    • Wenn die verbleibende Zeit größer als 0 ist, Folgendes anzuzeigen: "Time remaining: [remaining_time_object]"
    • Wenn die verbleibende Zeit 0 oder kleiner ist, "Time's up!" anzuzeigen und die Schleife zu verlassen
  11. Den Ticker mit ticker.Stop() zu stoppen
  12. Die Abschlussstatistiken anzuzeigen:
    • "=== TIMER COMPLETE ==="
    • "Original duration: [countdown_duration_object]"
    • "Update interval: [update_interval_object]"
    • "Total updates displayed: [number_of_updates]" (zu berechnen, wie oft die verbleibende Zeit angezeigt wurde)
  13. Die Abschlussmeldung anzuzeigen: "Countdown timer finished successfully"

Verwende das Paket time für Ticker- und Daueroperationen, das Paket strings, um Eingabezeichenketten aufzuteilen, das Paket strconv, um Zeichenketten in Ganzzahlen umzuwandeln, und das Paket fmt für die Ausgabe. Denke daran, dass time.NewTicker einen Ticker zurückgibt, der in regelmäßigen Abständen Werte über seinen Kanal sendet, und dass du ticker.Stop() aufrufen musst, wenn du fertig bist, um Ressourcen freizugeben. Diese Herausforderung zeigt, wie du mithilfe der Zeitmessmechanismen von Go einen praktischen Countdown-Timer erstellst.

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

Übe selbstständig: Online-Go-Compiler