Menu
Coddy logo textTech

Durée temporelle

Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 62 sur 68.

Lorsque vous travaillez avec le temps en Go, vous aurez souvent besoin de représenter des périodes de temps - comme « 5 minutes » ou « 2 heures ». Go fournit le type time.Duration spécifiquement à cet effet.

Un time.Duration représente un intervalle de temps entre deux instants. Go inclut plusieurs constantes prédéfinies qui rendent la création de durées simple et lisible :

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

Les constantes de durée les plus couramment utilisées sont time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute et time.Hour. Vous pouvez multiplier ces constantes par des entiers pour créer la durée exacte dont vous avez besoin.

Les valeurs de durée sont essentielles pour l'arithmétique temporelle, les opérations de planification et le contrôle du timing dans vos programmes. Elles fonctionnent de manière transparente avec d'autres fonctions temporelles et offrent un moyen clair et lisible d'exprimer des intervalles de temps dans votre code.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Créez un minuteur de séance d'entraînement qui utilise time.Duration pour suivre différents intervalles d'exercices et périodes de repos. Ce défi testera votre capacité à créer des valeurs de durée en utilisant les constantes prédéfinies de Go et à effectuer des calculs avec celles-ci.

Vous recevrez deux entrées :

  • Une chaîne contenant les définitions d'exercices au format "exercise1:duration_value:duration_unit,exercise2:duration_value:duration_unit" (par exemple, "Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")
  • Une chaîne contenant les informations sur la période de repos au format "rest_duration_value:rest_duration_unit" (par exemple, "15:Second")

Votre tâche consiste à :

  1. Analyser la première entrée en la divisant par les virgules pour obtenir les entrées d'exercices individuelles
  2. Pour chaque entrée d'exercice, diviser par les deux-points pour extraire le nom de l'exercice, la valeur de la durée (sous forme de chaîne) et l'unité de durée
  3. Analyser la deuxième entrée en la divisant par les deux-points pour obtenir la valeur et l'unité de la durée de repos
  4. Convertir les valeurs de durée de chaînes de caractères en entiers et créer des objets time.Duration en utilisant les constantes appropriées :
    • Pour "Second" : multiplier par time.Second
    • Pour "Minute" : multiplier par time.Minute
    • Pour "Hour" : multiplier par time.Hour
  5. Afficher l'en-tête de l'application : "=== WORKOUT SESSION TIMER ==="
  6. Afficher la configuration de la séance : "Setting up workout session..."
  7. Pour chaque exercice, afficher : "Exercise: [exercise_name] - Duration: [duration_object]"
  8. Afficher la période de repos : "Rest period between exercises: [rest_duration_object]"
  9. Calculer et afficher le détail de la séance :
    • "=== SESSION BREAKDOWN ==="
    • Pour chaque exercice : "[exercise_name]: [duration_in_seconds] seconds"
    • "Rest periods: [rest_duration_in_seconds] seconds each"
  10. Calculer le temps total de la séance (somme de toutes les durées d'exercices plus les périodes de repos entre les exercices) :
    • "=== TIMING CALCULATIONS ==="
    • "Total exercise time: [total_exercise_duration_object]"
    • "Total rest time: [total_rest_duration_object]" (périodes de repos entre les exercices, donc une de moins que le nombre d'exercices)
    • "Complete session duration: [total_session_duration_object]"
  11. Afficher les statistiques de la séance :
    • "=== 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. Afficher les conversions de temps :
    • "=== TIME CONVERSIONS ==="
    • "Session duration in minutes: [total_minutes]" (convertir la durée totale de la séance en minutes)
    • "Session duration in hours: [total_hours]" (convertir la durée totale de la séance en heures, afficher sous forme décimale)
  13. Afficher le message de fin : "Workout session timer configured successfully"

Utilisez le package time pour travailler avec les durées, le package strings pour diviser les chaînes d'entrée, le package strconv pour convertir les nombres en chaînes en entiers, et le package fmt pour la sortie formatée. N'oubliez pas que les valeurs time.Duration peuvent être additionnées et converties en différentes unités à l'aide de méthodes telles que Seconds(), Minutes() et Hours(). Ce défi démontre comment créer et manipuler des valeurs de durée pour des applications de chronométrage.

Aide-mémoire

Go fournit le type time.Duration pour représenter des périodes de temps entre deux instants.

Créez des durées en utilisant des constantes prédéfinies multipliées par des entiers :

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

Les constantes de durée courantes incluent :

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

Les valeurs de durée peuvent être additionnées et converties en différentes unités à l'aide de méthodes telles que Seconds(), Minutes(), et Hours().

Essayez vous-même

package main

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

func main() {
	// Lire l'entrée
	var exerciseInput string
	var restInput string
	fmt.Scanln(&exerciseInput)
	fmt.Scanln(&restInput)
	
	// Analyser les exercices à partir de l'entrée
	exerciseEntries := strings.Split(exerciseInput, ",")
	
	// Analyser la période de repos à partir de l'entrée
	restParts := strings.Split(restInput, ":")
	
	// TODO: Écrivez votre code ci-dessous
	// 1. Analyser chaque entrée d'exercice pour extraire le nom, la valeur de durée et l'unité
	// 2. Convertir les valeurs de durée en entiers et créer des objets time.Duration
	// 3. Analyser la durée de repos et créer un objet time.Duration
	// 4. Afficher les informations de la séance d'entraînement et les calculs
	// 5. Calculer les statistiques de la séance et les conversions de temps
	
	// N'oubliez pas d'afficher toutes les informations requises comme spécifié dans le défi
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux