Menu
Coddy logo textTech

Zeitdauer

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

Wenn Sie in Go mit Zeit arbeiten, müssen Sie oft Zeiträume darstellen – wie „5 Minuten“ oder „2 Stunden“. Go bietet den Typ time.Duration speziell für diesen Zweck an.

Ein time.Duration repräsentiert eine Zeitspanne zwischen zwei Zeitpunkten. Go enthält mehrere vordefinierte Konstanten, die das Erstellen von Zeitspannen einfach und lesbar machen:

tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.Second

Die am häufigsten verwendeten Zeitdauer-Konstanten sind time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute und time.Hour. Sie können diese Konstanten mit Ganzzahlen multiplizieren, um genau die Zeitdauer zu erstellen, die Sie benötigen.

Dauerwerte sind essenziell für die Zeitarithmetik, Planungsoperationen und die Steuerung des Timings in Ihren Programmen. Sie arbeiten nahtlos mit anderen Zeitfunktionen zusammen und bieten eine klare, lesbare Weise, Zeitspannen in Ihrem Code auszudrücken.

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 einen Workout-Session-Timer, der time.Duration verwendet, um verschiedene Übungsintervalle und Ruhephasen zu verfolgen. Diese Herausforderung testet Ihre Fähigkeit, Dauerwerte mithilfe der vordefinierten Konstanten von Go zu erstellen und Berechnungen mit ihnen durchzuführen.

Sie erhalten zwei Eingaben:

  • Einen String, der Übungsdefinitionen im Format "exercise1:duration_value:duration_unit,exercise2:duration_value:duration_unit" enthält (z. B. "Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")
  • Einen String, der Informationen zur Ruhephase im Format "rest_duration_value:rest_duration_unit" enthält (z. B. "15:Second")

Ihre Aufgabe ist es:

  1. Die erste Eingabe zu parsen, indem Sie sie an Kommas trennen, um einzelne Übungseinträge zu erhalten
  2. Für jeden Übungseintrag an Doppelpunkten zu trennen, um den Übungsnamen, den Dauerwert (als String) und die Zeiteinheit zu extrahieren
  3. Die zweite Eingabe zu parsen, indem Sie sie an Doppelpunkten trennen, um den Dauerwert und die Einheit der Ruhephase zu erhalten
  4. Dauerwerte von Strings in Ganzzahlen umzuwandeln und time.Duration-Objekte 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 Anwendungs-Header anzuzeigen: "=== WORKOUT SESSION TIMER ==="
  6. Das Session-Setup anzuzeigen: "Setting up workout session..."
  7. Für jede Übung anzuzeigen: "Exercise: [exercise_name] - Duration: [duration_object]"
  8. Die Ruhephase anzuzeigen: "Rest period between exercises: [rest_duration_object]"
  9. Die Aufschlüsselung der Session zu berechnen und anzuzeigen:
    • "=== SESSION BREAKDOWN ==="
    • Für jede Übung: "[exercise_name]: [duration_in_seconds] seconds"
    • "Rest periods: [rest_duration_in_seconds] seconds each"
  10. Die gesamte Session-Zeit zu berechnen (Summe aller Übungsdauern plus Ruhephasen zwischen den Übungen):
    • "=== TIMING CALCULATIONS ==="
    • "Total exercise time: [total_exercise_duration_object]"
    • "Total rest time: [total_rest_duration_object]" (Ruhephasen zwischen den Übungen, also eine weniger als die Anzahl der Übungen)
    • "Complete session duration: [total_session_duration_object]"
  11. Session-Statistiken anzuzeigen:
    • "=== SESSION STATISTICS ==="
    • "Number of exercises: [number_of_exercises]"
    • "Longest exercise: [longest_exercise_name] ([longest_duration_object])"
    • "Shortest exercise: [shortest_exercise_name] ([shortest_duration_object])"
    • "Average exercise duration: [average_duration_in_seconds] seconds"
  12. Zeitumrechnungen anzuzeigen:
    • "=== TIME CONVERSIONS ==="
    • "Session duration in minutes: [total_minutes]" (Gesamtdauer der Session in Minuten umrechnen)
    • "Session duration in hours: [total_hours]" (Gesamtdauer der Session in Stunden umrechnen, als Dezimalzahl anzeigen)
  13. Die Abschlussmeldung anzuzeigen: "Workout session timer configured successfully"

Verwenden Sie das time-Paket, um mit Zeitdauern zu arbeiten, das strings-Paket, um Eingabestrings zu trennen, das strconv-Paket, um String-Zahlen in Ganzzahlen umzuwandeln, und das fmt-Paket für die formatierte Ausgabe. Denken Sie daran, dass time.Duration-Werte addiert und mit Methoden wie Seconds(), Minutes() und Hours() in verschiedene Einheiten umgerechnet werden können. Diese Herausforderung zeigt, wie man Dauerwerte für Timing-Anwendungen erstellt und manipuliert.

Spickzettel

Go bietet den Typ time.Duration an, um Zeitspannen zwischen zwei Zeitpunkten darzustellen.

Erstellen Sie Zeitspannen mithilfe vordefinierter Konstanten, multipliziert mit Ganzzahlen:

tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.Second

Gängige Zeitspannen-Konstanten sind:

  • time.Nanosecond
  • time.Microsecond
  • time.Millisecond
  • time.Second
  • time.Minute
  • time.Hour

Zeitspannen-Werte können addiert und mithilfe von Methoden wie Seconds(), Minutes() und Hours() in verschiedene Einheiten umgewandelt werden.

Probier es selbst

package main

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

func main() {
	// Eingabe lesen
	var exerciseInput string
	var restInput string
	fmt.Scanln(&exerciseInput)
	fmt.Scanln(&restInput)
	
	// Übungen aus der Eingabe parsen
	exerciseEntries := strings.Split(exerciseInput, ",")
	
	// Ruhephase aus der Eingabe parsen
	restParts := strings.Split(restInput, ":")
	
	// TODO: Schreiben Sie Ihren Code unten
	// 1. Jeden Übungseintrag parsen, um Name, Dauerwert und Einheit zu extrahieren
	// 2. Dauerwerte in Ganzzahlen umwandeln und time.Duration-Objekte erstellen
	// 3. Ruhedauer parsen und time.Duration-Objekt erstellen
	// 4. Informationen zur Trainingseinheit und Berechnungen anzeigen
	// 5. Sitzungsstatistiken und Zeitumrechnungen berechnen
	
	// Denken Sie daran, alle erforderlichen Informationen wie in der Aufgabe angegeben auszugeben
}
quiz iconTeste dich selbst

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

Alle Lektionen in Logik & Ablauf