cybercursus

Les slices et tableaux

14 min · Débutant · 3 octobre 2026

Sommaire
  1. Les tableaux : taille fixe
  2. Les slices : taille flexible
  3. Créer un slice avec make
  4. Découper un slice
  5. À toi de jouer

Les tableaux : taille fixe

go
var notes [3]int = [3]int{12, 15, 8}
fmt.Println(notes[0])     // 12
fmt.Println(len(notes))   // 3

// notes[3] = 20 // erreur de compilation : index hors limites, detectable ici car la taille est connue

La taille [3] fait partie intégrante du type du tableau : [3]int et [4]int sont deux types différents et incompatibles.

Les slices : taille flexible

go
fruits := []string{"pomme", "banane", "cerise"}
fmt.Println(fruits[0])     // "pomme"
fmt.Println(len(fruits))   // 3

fruits = append(fruits, "datte")
fmt.Println(fruits)        // [pomme banane cerise datte]
fmt.Println(len(fruits))   // 4

Notez l’absence de nombre entre crochets ([]string et non [3]string) : un slice n’a pas de taille fixe dans son type.

Attention

append() ne modifie pas forcément le slice en place : elle renvoie le résultat, qu’il faut toujours réassigner, comme fruits = append(fruits, "datte"). Oublier la réassignation est une source d’erreur classique.

Créer un slice avec make

go
scores := make([]int, 3) // slice de 3 entiers, initialises a 0
scores[0] = 10
scores[1] = 20
scores[2] = 30
fmt.Println(scores) // [10 20 30]

make([]int, 3) crée un slice déjà rempli de 3 zéros, prêt à être modifié par index, contrairement à un slice vide []int{} qui nécessiterait append() pour chaque élément.

Découper un slice

go
nombres := []int{10, 20, 30, 40, 50}
sousEnsemble := nombres[1:3] // indices 1 et 2 (3 exclu)
fmt.Println(sousEnsemble)    // [20 30]

Comme pour les chaînes Python, [1:3] extrait les éléments des index 1 et 2, l’index de fin étant exclu.

À toi de jouer

go
valeurs := []int{4, 8, 15, 16}
somme := 0
for _, v := range valeurs {
  somme += v
}
fmt.Println(somme)
Que produit ce code à l'exécution ?
Quelle est la différence essentielle entre un tableau Go (comme [3]int) et un slice ([]int) ?
Que fait `nombres = append(nombres, 4)` sur un slice nombres ?

Pour aller plus loin

Commentaires

Recherche