Les slices et tableaux
14 min · Débutant · 3 octobre 2026
Les tableaux : taille fixe
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
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
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
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
valeurs := []int{4, 8, 15, 16}
somme := 0
for _, v := range valeurs {
somme += v
}
fmt.Println(somme)