exo-go
Exercice 1 : Manipulation de chaînes et slices
Objectif : tester la compréhension des slices et de range.
Écris une fonctionReverseWords(s string) stringqui inverse chaque mot d’une chaîne tout en conservant l’ordre des mots.
Exemple :"hello world"→"olleh dlrow"
Points d’attention :
- Utiliser
strings.Fieldspour séparer les mots - Manipuler les slices de runes pour gérer correctement les caractères UTF-8
Exercice 2 : Interfaces et polymorphisme
Objectif : tester la maîtrise des interfaces et méthodes.
On a l’interface suivante :
type Shape interface {
Area() float64
Perimeter() float64
}Points d’attention :
- Compréhension des méthodes et des interfaces
- Gestion des types
float64et des calculs
Exercice 3 : Concurrence avec goroutines
Objectif : tester la compréhension de la concurrence, canaux et select.
Écris une fonction qui prend une slice de nombres et calcule en parallèle :La somme des nombres pairsLa somme des nombres impairs
Retourne les deux résultats.
Indications :
- Lancer deux goroutines pour calculer séparément
- Utiliser un channel pour récupérer les résultats
Exercice 4 : Gestion d’erreurs
Objectif : tester la gestion idiomatique des erreurs en Go.
Implémente une fonctionReadFileLines(path string) ([]string, error)qui lit un fichier et retourne toutes les lignes.
Si le fichier n’existe pas, retourne une erreur appropriée.
Points d’attention :
- Utiliser
os.Openetbufio.Scanner - Retourner l’erreur à l’appelant, ne pas
log.Fatal
Exercice 5 : Structures imbriquées et JSON
Objectif : tester la manipulation de structs et JSON.
Définis une structure User :type User struct {
Name string
Age int
Emails []string
}- Convertir un
Useren JSON - Lire un JSON et récupérer un
User
Points d’attention :
- Utiliser
encoding/json - Gérer les erreurs de décodage
Exercice 6 : Canal de pipeline (niveau avancé)
Objectif : tester les pipelines Go et select.
Crée un pipeline de traitement :
- Étape 1 : Générer les nombres de 1 à 100 dans un channel
- Étape 2 : Filtrer les multiples de 3
- Étape 3 : Multiplier les nombres filtrés par 2
- Étape 4 : Récupérer et afficher les résultats
Points d’attention :
- Utiliser plusieurs goroutines connectées par des channels
- Fermer les channels correctement pour éviter un deadlock