La boucle for est l'une des instructions les plus couramment utilisées pour exécuter une logique de manière répétée.
En Go, elle se compose du mot-clé for, d'un en-tête et d'un bloc de code qui contient le corps de la boucle entouré d'accolades.
L'en-tête se compose de 3 composants séparés par des points-virgules ; : init, condition et post.
for init; condition; post {
// loop body - code that is executed repeatedly as long as the condition is true
}
Remarque : Contrairement à d'autres langages, il n'y a pas de parenthèses () autour des trois composants de l'en-tête.
En fait, insérer de telles parenthèses est une erreur de compilation.
Cependant, les accolades { } qui entourent le corps de la boucle sont toujours obligatoires.
Le composant init initialise généralement une variable compteur, le composant condition vérifie si la boucle doit continuer ou s'arrêter et le composant post incrémente généralement le compteur à la fin de chaque répétition.
for i := 1; i < 10; i++ {
fmt.Println(i)
}
Cette boucle affiche les nombres de 1 à 9 (9 compris).
Définir le pas se fait souvent à l'aide d'une instruction d'incrémentation ou de décrémentation, comme le montre l'exemple ci-dessus.
Tu es un observateur d'oiseaux passionné et tu gardes une trace du nombre d'oiseaux qui ont visité ton jardin. D'habitude, tu tiens un décompte dans un carnet pour compter les oiseaux, mais pour mieux exploiter tes données, tu as numérisé les comptages d'oiseaux des dernières semaines.
Commençons par analyser les données pour en avoir une vue d'ensemble. Découvre combien d'oiseaux tu as comptés au total depuis que tu as commencé à tenir tes relevés.
Implémente une fonction TotalBirdCount qui accepte un slice d'int contenant le nombre d'oiseaux comptés par jour.
Elle doit renvoyer le nombre total d'oiseaux que tu as comptés.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
TotalBirdCount(birdsPerDay)
// => 34
Maintenant que tu as une idée générale de tes comptages d'oiseaux, tu veux faire une analyse plus fine.
Implémente une fonction BirdsInWeek qui accepte un slice contenant le nombre d'oiseaux comptés par jour et un numéro de semaine.
Elle renvoie le nombre total d'oiseaux que tu as comptés dans cette semaine précise. Tu peux considérer que les semaines sont toujours suivies en entier.
birdsPerDay := []int{2, 5, 0, 7, 4, 1, 3, 0, 2, 5, 0, 1, 3, 1}
BirdsInWeek(birdsPerDay, 2)
// => 12
Tu t'es rendu compte que pendant tout le temps où tu essayais de suivre les oiseaux, un oiseau se cachait dans un coin éloigné du jardin.
Tu as compris que cet oiseau passait toujours un jour sur deux dans ton jardin.
Tu ne sais pas exactement où il était entre ces jours-là, mais en tout cas pas dans ton jardin.
Ton intuition d'observateur d'oiseaux te dit aussi que l'oiseau était dans ton jardin le premier jour que tu as répertorié dans ta liste.
Avec ces nouvelles informations, écris une fonction FixBirdCountLog qui prend en argument un slice contenant le nombre d'oiseaux comptés par jour et qui renvoie le slice après avoir corrigé l'erreur de comptage.
birdsPerDay := []int{2, 5, 0, 7, 4, 1}
FixBirdCountLog(birdsPerDay)
// => [3 5 1 7 5 1]
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 34 concepts165 exercices, et un vrai mentorat humain, le tout gratuitement.