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.SecondLes 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.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCré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 à :
- Analyser la première entrée en la divisant par les virgules pour obtenir les entrées d'exercices individuelles
- 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
- 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
- Convertir les valeurs de durée de chaînes de caractères en entiers et créer des objets
time.Durationen utilisant les constantes appropriées :- Pour
"Second": multiplier partime.Second - Pour
"Minute": multiplier partime.Minute - Pour
"Hour": multiplier partime.Hour
- Pour
- Afficher l'en-tête de l'application :
"=== WORKOUT SESSION TIMER ===" - Afficher la configuration de la séance :
"Setting up workout session..." - Pour chaque exercice, afficher :
"Exercise: [exercise_name] - Duration: [duration_object]" - Afficher la période de repos :
"Rest period between exercises: [rest_duration_object]" - 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"
- 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]"
- 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"
- 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)
- 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.SecondLes constantes de durée courantes incluent :
time.Nanosecondtime.Microsecondtime.Millisecondtime.Secondtime.Minutetime.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
}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
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche7Gestion des erreurs en profondeur
Types d'erreurs personnalisésEnvelopper des erreurs avec `%w`Désenvelopper avec `errors.Is`Désenvelopper avec `errors.As`Comprendre `panic`Utiliser `recover`Récapitulatif - Division sécurisée10Travailler avec le temps
Obtenir l'heure actuelleCréer une heure spécifiqueFormatage de l'heureParsing de chaînes de tempsDurée temporelleArithmétique temporelleSleep et TickersRécapitulatif - Minuteur simple2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements