Déréférencement de pointeurs
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 63 sur 109.
Le déréférencement de pointeurs (*) vous permet d'accéder à la valeur stockée à une adresse mémoire. C'est ce qu'on appelle le « déréférencement » du pointeur.
Créez une variable et un pointeur vers celle-ci :
func main() {
number := 42
pointer := &number
// Déréférencez le pointeur pour obtenir la valeur
value := *pointer
fmt.Println("Pointer:", pointer)
fmt.Println("Dereferenced value:", value)
}La sortie affiche à la fois le pointeur et la valeur vers laquelle il pointe :
Pointer: 0xc000018030
Dereferenced value: 42L'astérisque (*) devant une variable pointeur permet d'accéder à la valeur réelle située à cette adresse mémoire.
Défi
DébutantDans ce défi, vous allez vous entraîner à déréférencer des pointeurs en Go. Nous avons une variable message avec une valeur de type chaîne de caractères, et un pointeur messagePtr qui pointe vers elle.
Votre tâche consiste à déréférencer le pointeur pour accéder à la valeur vers laquelle il pointe et l'afficher.
Aide-mémoire
Utilisez l'opérateur astérisque (*) pour déréférencer un pointeur et accéder à la valeur à l'adresse mémoire :
number := 42
pointer := &number
// Déréférencer le pointeur pour obtenir la valeur
value := *pointer
fmt.Println("Pointer:", pointer) // 0xc000018030
fmt.Println("Dereferenced value:", value) // 42L'opérateur * placé devant une variable de type pointeur permet d'accéder à la valeur réelle stockée à cette adresse mémoire.
Essayez vous-même
package main
import "fmt"
func main() {
// Voici notre variable de type chaîne
message := "Hello, pointers!"
// Ceci est un pointeur vers notre variable message
messagePtr := &message
// TODO: Déréférencer messagePtr pour obtenir la valeur vers laquelle il pointe
// et la stocker dans la variable 'value'
value := ""
// Afficher les résultats
fmt.Println("The pointer points to the value:", value)
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Opérateurs de comparaison et logiques
Opérateurs de comparaison - Partie 1Opérateurs de comparaison - Partie 2Opérateur logique ANDOpérateur logique OROpérateur logique NOTBases de la priorité des opérateursRécapitulatif - Effectuer des comparaisons7Structures de contrôle : Les boucles
Explication de la boucle `for`Boucle For - Les basesBoucle For - Condition uniquementLe mot-clé `break`Le mot-clé `continue`Boucles imbriquéesRécapitulatif - Répéter des actions2Variables et types de données de base
Qu'est-ce qu'une variableInférence de type avec `:=` Entiers (int)Nombres à virgule flottanteBooléensChaînes de caractères (Strings)Valeurs zéroConstantesConventions de nommageRécapitulatif - Variables et types5Entrées/Sorties de base
Sortie formatéeVerbes de formatageAffichage des typesSaisie utilisateur de baseRécapitulatif - Entrées et Sorties8Fonctions
Comprendre les fonctionsDéclarer une fonctionAppeler des fonctionsParamètres de fonctionRetourner une valeur uniqueRetourner plusieurs valeursValeurs de retour nomméesBases de la portée des fonctionsRécapitulatif - Créer du code réutilisable11Types composites : Slices
Introduction aux SlicesDéclaration de littéraux de SlicesCréation de Slices avec `make`Longueur vs Capacité des SlicesAccès aux éléments d'un SliceAjout d'élémentsDécoupage de Slices/Tableaux existantsItération sur les SlicesCopie de SlicesRécapitulatif - Listes dynamiques3Opérateurs de base
Opérateurs arithmétiquesOpérateur de divisionL'opérateur moduloOpérateur d'affectationOpérateurs d'affectation augmentéeIncrémentation et décrémentationRécapitulatif - Calculs6Structure de contrôle : Les conditionnelles
L'instruction `if`Le mot-clé `else`Le mot-clé `else if`Masquage de variable dans `if`Initialisation des variablesL'instruction `switch``switch` avec expressions`switch` sans expressionLe mot-clé `fallthrough`Récapitulatif - Prendre des décisions9Pointeurs
Qu'est-ce qu'un pointeur ?Déclaration de variables pointeursL'opérateur d'adresseDéréférencement de pointeursUtiliser des pointeurs dans les fonctionsPointeurs NilRécapitulatif - Comprendre les pointeurs12Types composites : Maps
Introduction aux MapsDéclaration de littéraux de MapCréation de Maps avec `make`Ajout et mise à jour de paires clé-valeurAccès aux valeurs d'une MapVérification de l'existence d'une cléSuppression d'entrées de MapTaille d'une MapItération sur les MapsRécapitulatif - Stockage clé-valeur