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.

challenge icon

Aufgabe

Einfach

Erstelle einen Timer für eine Trainingseinheit, der time.Duration verwendet, um verschiedene Übungsintervalle und Ruhezeiten zu erfassen. Diese Herausforderung testet deine Fähigkeit, Dauerwerte mithilfe der vordefinierten Konstanten von Go zu erstellen und damit Berechnungen durchzuführen.

Du erhältst zwei Eingaben:

  • Eine Zeichenkette mit Übungsdefinitionen im Format "exercise1:duration_value:duration_unit,exercise2:duration_value:duration_unit" (z. B. "Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")
  • Eine Zeichenkette mit Informationen zur Ruhezeit im Format "rest_duration_value:rest_duration_unit" (z. B. "15:Second")

Deine Aufgabe ist es:

  1. Die erste Eingabe durch Aufteilen an Kommas zu verarbeiten, um einzelne Übungseinträge zu erhalten
  2. Für jeden Übungseintrag an Doppelpunkten aufzuteilen, um den Übungsnamen, den Dauerwert (als Zeichenkette) und die Zeiteinheit zu extrahieren
  3. Die zweite Eingabe durch Aufteilen an Doppelpunkten zu verarbeiten, um den Dauerwert und die Einheit der Ruhezeit zu erhalten
  4. Dauerwerte von Zeichenketten in Ganzzahlen umzuwandeln und mithilfe der entsprechenden Konstanten time.Duration-Objekte 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 Anwendungskopfzeile anzeigen: "=== WORKOUT SESSION TIMER ==="
  6. Die Einrichtung der Trainingseinheit anzeigen: "Setting up workout session..."
  7. Für jede Übung Folgendes anzeigen: "Exercise: [exercise_name] - Duration: [duration_object]"
  8. Die Ruhezeit anzeigen: "Rest period between exercises: [rest_duration_object]"
  9. Die Aufschlüsselung der Trainingseinheit berechnen und anzeigen:
    • "=== SESSION BREAKDOWN ==="
    • Für jede Übung: "[exercise_name]: [duration_in_seconds] seconds"
    • "Rest periods: [rest_duration_in_seconds] seconds each"
  10. Die Gesamtdauer der Trainingseinheit berechnen (Summe aller Übungsdauern plus der Ruhezeiten zwischen den Übungen):
    • "=== TIMING CALCULATIONS ==="
    • "Total exercise time: [total_exercise_duration_object]"
    • "Total rest time: [total_rest_duration_object]" (Ruhezeiten zwischen den Übungen, also eine weniger als die Anzahl der Übungen)
    • "Complete session duration: [total_session_duration_object]"
  11. Die Statistiken der Trainingseinheit anzeigen:
    • "=== 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. Zeiteinheiten-Umrechnungen anzeigen:
    • "=== TIME CONVERSIONS ==="
    • "Session duration in minutes: [total_minutes]" (die Gesamtdauer der Trainingseinheit in Minuten umwandeln)
    • "Session duration in hours: [total_hours]" (die Gesamtdauer der Trainingseinheit in Stunden umwandeln und als Dezimalzahl anzeigen)
  13. Die Abschlussmeldung anzeigen: "Workout session timer configured successfully"

Verwende das time-Paket, um mit Zeitdauern zu arbeiten, das strings-Paket, um Eingabezeichenketten aufzuteilen, das strconv-Paket, um Zeichenkettenzahlen in Ganzzahlen umzuwandeln, und das fmt-Paket für formatierte Ausgaben. Denke daran, dass time.Duration-Werte addiert und mithilfe von Methoden wie Seconds(), Minutes() und Hours() in verschiedene Einheiten umgewandelt werden können. Diese Herausforderung zeigt, wie Dauerwerte für Anwendungen zur Zeitmessung erstellt und verarbeitet 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

Übe selbstständig: Online-Go-Compiler