Aller au contenu

Exercices#

Implémenter une calculatrice avec des opérations personnalisées#

  • Définir les fonctions de base : Créez quatre fonctions séparées pour chaque opération de base : add, subtract, multiply, divide. Chacune doit prendre deux arguments de type float64 et retourner un résultat de type float64.

    Exemple de code pour la fonction add :

    func add(x float64, y float64) float64 {
        return x + y
    }
    
    * Extension avec des opérations personnalisées : Créez des fonctions supplémentaires pour d'autres opérations, comme le calcul du pourcentage, le carré, la racine carrée etc. Le même format de fonction peut être utilisé, avec des modifications selon les besoins.

  • Utiliser des interfaces pour gérer différentes opérations : Définir une interface Calculator qui définit une méthode Calculate qui prend deux float64 et retourne un float64. Cela permettra à différentes structures implémentant cette interface de fournir leur propre version de la méthode Calculate.

    Exemple de code pour l'interface Calculator :

    type Calculator interface {
        Calculate(x float64, y float64) float64
    }
    

  • Tests et validation de la calculatrice : Utiliser le package de test intégré de Go (testing) pour écrire des tests unitaires pour chaque fonction de calcul. Pour exécuter les tests, utilisez la commande go test.

    Exemple de code pour un test de la fonction add :

    func TestAdd(t *testing.T) {
        result := add(2, 3)
        if result != 5 {
            t.Errorf("Expected 5, got %f", result)
        }
    }
    

Créer une bibliothèque pour lire et écrire des fichiers CSV avec une gestion d'erreurs robuste#

  • Lire des fichiers CSV avec le package "encoding/csv" : Utilisez la fonction csv.NewReader pour créer un nouvel objet Reader, qui peut être utilisé pour lire les données à partir d'un fichier CSV.

    Exemple de code pour lire un fichier CSV :

    file, err := os.Open("data.csv")
    if err != nil {
        log.Fatal(err)
    }
    reader := csv.NewReader(file)
    records, err := reader.ReadAll()
    if err != nil {
        log.Fatal(err)
    }
    

  • Gestion des erreurs lors de la lecture des fichiers CSV : Lorsque vous lisez un fichier CSV, vérifiez toujours les erreurs retournées par les fonctions os.Open et reader.ReadAll. Si une erreur est détectée, utilisez log.Fatal pour la signaler et arrêter le programme.
  • Écrire des fichiers CSV avec le package "encoding/csv" : Utilisez la fonction csv.NewWriter pour créer un nouvel objet Writer, qui peut être utilisé pour écrire des données dans un fichier CSV.

    Exemple de code pour écrire dans un fichier CSV : ``` file, err := os.Create("output.csv") if err != nil { log.Fatal(err) } writer := csv.NewWriter(file) writer.Write([]string{"Field1", "Field2", "Field3"}) writer.Flush() if err := writer.Error(); err != nil { log

.Fatal(err) } ```

  • Gestion des erreurs lors de l'écriture des fichiers CSV : Après avoir écrit les données dans un fichier CSV avec writer.Write et writer.Flush, vérifiez toujours l'erreur retournée par writer.Error. Si une erreur est détectée, utilisez log.Fatal pour la signaler et arrêter le programme.