Exercice : goroutines et channels
Voici un exercice simple pour débutants qui vous permettra de bien comprendre comment fonctionnent les channels et les goroutines en Go.
L’exercice consiste à créer une goroutine qui calcule le carré de chaque nombre d’une liste et envoie le résultat sur un channel. La fonction principale (main) recevra ces résultats et les affichera.
Objectif
- 
Créer une goroutine qui parcourt une liste de nombres. 
- 
Calculer le carré de chaque nombre. 
- 
Envoyer chaque résultat sur un channel. 
- 
Dans la fonction main, recevoir et afficher les valeurs envoyées sur le channel. 
Étapes à suivre
- 
Déclarer une slice de nombres entiers (par exemple, [1, 2, 3, 4, 5]). 
- 
Créer un channel de type int qui servira à transmettre les résultats. 
- 
Lancer une goroutine qui va : - Parcourir la slice.
- Calculer le carré de chaque nombre.
- Envoyer chaque résultat sur le channel.
- Une fois terminé, fermer le channel pour signaler qu’il n’y a plus de valeurs à envoyer.
 
- 
Dans la fonction main, utiliser une boucle for range pour lire les valeurs du channel et les afficher. 
Exemple de code (correction de l'exercice)
package main
import "fmt"
// Fonction qui calcule le carré de chaque nombre d'une slice et envoie le résultat sur un channel.
func calculerCarres(nombres []int, resultats chan int) {
    for _, nombre := range nombres {
        carre := nombre * nombre
        resultats <- carre  // Envoi du carré sur le channel
    }
    close(resultats)  // Fermeture du channel après l'envoi de toutes les valeurs
}
func main() {
    // Définir une slice de nombres
    nombres := []int{1, 2, 3, 4, 5}
    // Créer un channel pour transmettre les résultats (type int)
    resultats := make(chan int)
    // Lancer la goroutine pour calculer les carrés
    go calculerCarres(nombres, resultats)
    // Recevoir et afficher les résultats depuis le channel
    for resultat := range resultats {
        fmt.Println("Carré calculé :", resultat)
    }
}
