Guide complet sur le mot-clé range en Go pour les débutants

Bonjour, aspirants programmeurs ! Aujourd'hui, nous allons entreprendre un voyage passionnant dans le monde de la programmation Go, en nous concentrant spécifiquement sur le mot-clé range. En tant que votre professeur de science informatique du coin, je suis là pour vous guider à travers ce concept avec de nombreux exemples et explications. Alors, prenez votre boisson favorite, installez-vous confortablement, et plongons dedans !

Go - Range

Qu'est-ce que range ?

Avant de commencer à coder, comprenons ce qu'est range. En Go, range est comme un guide magique pour vos structures de données. Il vous aide à itérer sur divers types de données, y compris les tableaux, les tranches, les maps, les chaînes de caractères et les canaux. Pensez-y comme un couteau suisse pour boucler sur des collections de données.

La syntaxe de range

La syntaxe de base de range est assez simple :

for index, value := range collection {
// Votre code ici
}

Ici, index vous donne la position de l'élément, et value vous donne l'élément lui-même. Mais ne vous inquiétez pas si cela semble abstrait pour le moment - nous verrons bientôt de nombreux exemples !

Utilisation de range avec des tableaux et des tranches

Commençons par un exemple simple utilisant un tableau :

package main

import "fmt"

func main() {
fruits := [3]string{"apple", "banana", "cherry"}

for index, fruit := range fruits {
fmt.Printf("Index: %d, Fruit: %s\n", index, fruit)
}
}

Lorsque vous exécutez ce code, vous verrez :

Index: 0, Fruit: apple
Index: 1, Fruit: banana
Index: 2, Fruit: cherry

Que se passe-t-il ici ? Le mot-clé range nous aide à boucler sur notre tableau fruits. Pour chaque itération, il nous donne l'index et la valeur (nom du fruit) à cet index.

Utiliser uniquement l'index

Parfois, vous pourriez n'avoir besoin que de l'index. Dans ce cas, vous pouvez omittre la variable de valeur :

for index := range fruits {
fmt.Printf("Index: %d\n", index)
}

Utiliser uniquement la valeur

Ou peut-être que vous ne vous intéressez que aux valeurs et non aux indices. Vous pouvez utiliser l'identificateur vide _ pour ignorer l'index :

for _, fruit := range fruits {
fmt.Printf("Fruit: %s\n", fruit)
}

Utilisation de range avec des maps

Les maps en Go sont comme des coffres au trésor pleins de paires clé-valeur. Voyons comment range fonctionne avec elles :

package main

import "fmt"

func main() {
ages := map[string]int{
"Alice": 25,
"Bob":   30,
"Charlie": 35,
}

for name, age := range ages {
fmt.Printf("%s a %d ans\n", name, age)
}
}

Sortie :

Alice a 25 ans
Bob a 30 ans
Charlie a 35 ans

Ici, range nous donne à la fois la clé (nom) et la valeur (âge) pour chaque entrée dans la map.

Utilisation de range avec des chaînes de caractères

Les chaînes de caractères en Go sont des séquences de bytes, et range peut nous aider à les itérer :

package main

import "fmt"

func main() {
message := "Hello, 世界"

for index, runeValue := range message {
fmt.Printf("Index: %d, Caractère: %c, Unicode: %U\n", index, runeValue, runeValue)
}
}

Cet exemple montre comment range gère correctement les caractères multi-octets (comme en chinois).

Utilisation de range avec des canaux

Les canaux sont une fonctionnalité unique en Go pour la communication entre goroutines. Voici comment range fonctionne avec les canaux :

package main

import "fmt"

func main() {
ch := make(chan int)
go func() {
ch <- 1
ch <- 2
ch <- 3
close(ch)
}()

for num := range ch {
fmt.Println(num)
}
}

Dans cet exemple, range continue de recevoir des valeurs du canal jusqu'à ce qu'il soit fermé.

Méthodes courantes de range

Voici un tableau récapitulatif des utilisations courantes de range :

Type de données Syntaxe Description
Tableau/Tranche for index, value := range array Itère sur chaque élément, fournissant l'index et la valeur
Map for key, value := range map Itère sur chaque paire clé-valeur
Chaîne de caractères for index, runeValue := range string Itère sur chaque point de code Unicode
Canal for value := range channel Reçoit des valeurs du canal jusqu'à ce qu'il soit fermé

Conclusion

Et voilà, les amis ! Nous avons effectué un grand tour du mot-clé range en Go. De los arrays aux maps, des chaînes de caractères aux canaux, range est votre compagnon de confiance pour itérer sur les structures de données en Go.

Souvenez-vous, la pratique rend parfait. Essayez d'écrire vos propres programmes utilisant range avec différents types de données. Expérimentez, faites des erreurs, et apprenez-en. C'est la meilleure façon de devenir compétent en programmation.

Avant de me quitter, voici un peu d'humour programmation : Pourquoi les programmeurs préfèrent-ils le mode sombre ? Parce que la lumière attire les bugs ! ?

Bonne programmation, et puissé le range être avec vous !

Credits: Image by storyset