0Pricing
Go Academy · Leçon

Parcourir des collections avec range

Utiliser range sur des slices, des maps et des chaînes

Parcourir des collections avec range est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Qu’est-ce que range ?

range est une forme spéciale de la boucle for qui parcourt les tableaux, les tranches, les tables associatives, les chaînes et les canaux. Elle renvoie un indice (ou une clé) et une valeur à chaque itération.

Parcourir une tranche

Renvoie l'indice et une copie de l'élément :

package main
import "fmt"

func main() {
    fruits := []string{"apple", "banana", "cherry"}
    for i, fruit := range fruits {
        fmt.Printf("%d: %s\n", i, fruit)
    }
}

Parcourir un tableau

Fonctionne exactement comme pour les tranches. Les éléments du tableau sont copiés à chaque itération :

package main
import "fmt"

func main() {
    nums := [3]int{10, 20, 30}
    for _, v := range nums {
        fmt.Println(v)
    }
}

Parcourir une table associative

Renvoie la clé et la valeur dans un ordre aléatoire :

package main
import "fmt"

func main() {
    capitals := map[string]string{
        "France": "Paris",
        "Japan":  "Tokyo",
    }
    for country, city := range capitals {
        fmt.Printf("%s -> %s\n", country, city)
    }
}

Parcourir une chaîne

Parcourt les points de code Unicode (rune), et non les octets. L'indice correspond à la position en octets du début du point de code :

package main
import "fmt"

func main() {
    for i, r := range "héllo" {
        fmt.Printf("%d: %c\n", i, r)
    }
}

Ignorer l'indice

Utilisez _ pour ignorer l'indice lorsque seules les valeurs vous intéressent :

package main
import "fmt"

func main() {
    total := 0
    for _, v := range []int{1, 2, 3, 4, 5} {
        total += v
    }
    fmt.Println(total) // 15
}

Parcours avec l'indice uniquement

Omettre la valeur ne conserve que l'indice. C'est utile pour les modifications sur place :

package main
import "fmt"

func main() {
    s := []int{1, 2, 3}
    for i := range s {
        s[i] *= 2
    }
    fmt.Println(s) // [2 4 6]
}

Parcourir un canal

range lit les valeurs d'un canal jusqu'à sa fermeture :

package main
import "fmt"

func main() {
    ch := make(chan int, 3)
    ch <- 1; ch <- 2; ch <- 3
    close(ch)
    for v := range ch {
        fmt.Println(v)
    }
}

Le piège de la variable de boucle

La variable de parcours est réutilisée à chaque itération : capturer son adresse dans une goroutine ou une fermeture est un bogue classique :

package main
import "fmt"

func main() {
    nums := []int{1, 2, 3}
    funcs := make([]func(), 3)
    for i, v := range nums {
        v := v // shadow with a copy
        funcs[i] = func() { fmt.Println(v) }
    }
    for _, f := range funcs { f() } // 1 2 3
}

Modifier les éléments d'une tranche

La valeur du parcours est une copie. Pour la modifier, utilisez l'indice :

package main
import "fmt"

func main() {
    s := []int{10, 20, 30}
    for i := range s {
        s[i]++
    }
    fmt.Println(s) // [11 21 31]
}

Vérification rapide

Lorsque vous parcourez une chaîne, quel est le type de la variable valeur ?

Récapitulatif : parcours

À retenir :

  • range fonctionne sur les tranches, les tableaux, les tables associatives, les chaînes et les canaux
  • Renvoie (indice, valeur) — chacun peut être ignoré avec _
  • Les valeurs du parcours sont des copies — modifiez-les via l'indice
  • Les chaînes produisent des points de code, et non des octets
  • L'ordre de parcours d'une table associative est aléatoire

Exercice pratique

Utilisez range pour calculer la somme de toutes les valeurs d'une map[string]int, puis affichez chaque entrée ainsi que le total.

Questions Fréquemment Posées

La leçon « Parcourir des collections avec range » est-elle gratuite ?

Oui — le texte complet de « Parcourir des collections avec range » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Parcourir des collections avec range » ?

Utiliser range sur des slices, des maps et des chaînes Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Parcourir des collections avec range » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Tableaux : collections de longueur fixe
  2. Slices : listes dynamiques
  3. Maps : tables clé-valeur
  4. Parcourir des collections avec range
← Retour à Go Academy