Récapitulatif - Gérer les problèmes
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 109 sur 109.
Défi
FacilePratiquons la gestion des erreurs en Go avec un programme simple de conversion de température.
Votre tâche consiste à implémenter une fonction qui convertit les températures de Celsius en Fahrenheit, avec une gestion appropriée des erreurs.
Complétez la fonction celsiusToFahrenheit qui :
- Convertit une température Celsius en Fahrenheit en utilisant la formule : F = C × 9/5 + 32
- Renvoie une erreur si la température est inférieure au zéro absolu (-273.15°C)
Pour le message d'erreur, vous devez renvoyer exactement : "Error: temperature below absolute zero"
La fonction main contient des cas de test pour vérifier votre implémentation.
Essayez vous-même
package main
import (
"errors"
"fmt"
)
// celsiusToFahrenheit convertit les Celsius en Fahrenheit
// Retourne une erreur si la température est inférieure au zéro absolu (-273.15°C)
func celsiusToFahrenheit(celsius float64) (float64, error) {
// TODO: Implémenter la logique de conversion
// 1. Vérifier si la température est inférieure au zéro absolu (-273.15°C)
// 2. Si elle est valide, convertir en utilisant la formule : F = C × 9/5 + 32
// 3. Retourner la valeur appropriée et l'erreur
return 0, nil
}
func main() {
// Tester une température valide
fmt.Println("Converting 25°C to Fahrenheit:")
fahrenheit, err := celsiusToFahrenheit(25)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("25°C = %.2f°F\n", fahrenheit)
}
// Tester une autre température valide
fmt.Println("\nConverting 0°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(0)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("0°C = %.2f°F\n", fahrenheit)
}
// Tester une température invalide (sous le zéro absolu)
fmt.Println("\nConverting -300°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(-300)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("-300°C = %.2f°F\n", fahrenheit)
}
}Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaison - Partie 1Opérateurs de comparaison - Partie 2Opérateur logique ANDOpérateur logique OROpérateur logique NOTBases de la priorité des opérateursRécapitulatif - Effectuer des comparaisons7Structures de contrôle : Les boucles
Explication de la boucle `for`Boucle For - Les basesBoucle For - Condition uniquementLe mot-clé `break`Le mot-clé `continue`Boucles imbriquéesRécapitulatif - Répéter des actions2Variables et types de données de base
Qu'est-ce qu'une variableInférence de type avec `:=` Entiers (int)Nombres à virgule flottanteBooléensChaînes de caractères (Strings)Valeurs zéroConstantesConventions de nommageRécapitulatif - Variables et types5Entrées/Sorties de base
Sortie formatéeVerbes de formatageAffichage des typesSaisie utilisateur de baseRécapitulatif - Entrées et Sorties8Fonctions
Comprendre les fonctionsDéclarer une fonctionAppeler des fonctionsParamètres de fonctionRetourner une valeur uniqueRetourner plusieurs valeursValeurs de retour nomméesBases de la portée des fonctionsRécapitulatif - Créer du code réutilisable11Types composites : Slices
Introduction aux SlicesDéclaration de littéraux de SlicesCréation de Slices avec `make`Longueur vs Capacité des SlicesAccès aux éléments d'un SliceAjout d'élémentsDécoupage de Slices/Tableaux existantsItération sur les SlicesCopie de SlicesRécapitulatif - Listes dynamiques14Gestion de base des erreurs
Le concept d'erreurL'interface `error`Fonctions retournant des erreursVérification des erreursCréation d'erreurs simplesCréation d'erreurs formatéesGestion de base des erreursRécapitulatif - Gérer les problèmes3Opérateurs de base
Opérateurs arithmétiquesOpérateur de divisionL'opérateur moduloOpérateur d'affectationOpérateurs d'affectation augmentéeIncrémentation et décrémentationRécapitulatif - Calculs6Structure de contrôle : Les conditionnelles
L'instruction `if`Le mot-clé `else`Le mot-clé `else if`Masquage de variable dans `if`Initialisation des variablesL'instruction `switch``switch` avec expressions`switch` sans expressionLe mot-clé `fallthrough`Récapitulatif - Prendre des décisions9Pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de variables pointeursL'opérateur d'adresseDéréférencement de pointeursUtiliser des pointeurs dans les fonctionsPointeurs NilRécapitulatif - Comprendre les pointeurs12Types composites : Maps
Introduction aux MapsDéclaration de littéraux de MapCréation de Maps avec `make`Ajout et mise à jour de paires clé-valeurAccès aux valeurs d'une MapVérification de l'existence d'une cléSuppression d'entrées de MapTaille d'une MapItération sur les MapsRécapitulatif - Stockage clé-valeur