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 devrez souvent représenter des durées — comme « 5 minutes » ou « 2 heures ». Go fournit le type time.Duration spécifiquement à cette fin.

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 minutage dans vos programmes. Elles fonctionnent parfaitement avec d’autres fonctions temporelles et offrent une manière claire et lisible d’exprimer des intervalles de temps dans votre code.

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’exercice et périodes de repos. Ce défi mettra à l’épreuve votre capacité à créer des valeurs de durée à l’aide des 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 des 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 séparant sur les virgules afin d’obtenir les entrées d’exercices individuelles
  2. Pour chaque entrée d’exercice, la séparer sur les deux-points afin d’extraire le nom de l’exercice, la valeur de durée (sous forme de chaîne) et l’unité de durée
  3. Analyser la deuxième entrée en la séparant sur les deux-points afin d’obtenir la valeur et l’unité de la durée du repos
  4. Convertir les valeurs de durée des chaînes en entiers et créer des objets time.Duration à l’aide des 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 la décomposition 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 la durée totale de la séance (la somme de toutes les durées d’exercice 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, soit 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, 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 séparer les chaînes d’entrée, le package strconv pour convertir les nombres sous forme de chaînes en entiers, et le package fmt pour produire une 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 montre comment créer et manipuler des valeurs de durée pour des applications de chronométrage.

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

Entraînez-vous par vous-même : Compilateur Go en ligne