Déclaration de variables pointeurs
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 61 sur 109.
En Go, vous pouvez déclarer des pointeurs de deux manières principales : en utilisant var avec un type de pointeur ou en utilisant l'opérateur d'adresse avec :=.
Déclarez un pointeur en utilisant var avec un type de pointeur :
func main() {
var x int = 42
var ptr *int // Déclare un pointeur vers un entier
ptr = &x // Assigne l'adresse de x à ptr
fmt.Println("Value of x:", x)
fmt.Println("Value of ptr:", ptr)
fmt.Println("Value at ptr:", *ptr)
}La sortie montre que le pointeur stocke l'adresse de x :
Value of x: 42
Value of ptr: 0xc000018030
Value at ptr: 42Vous pouvez également déclarer et initialiser un pointeur sur une seule ligne en utilisant := :
y := 100
ptr := &y // Déclarer et initialiser le pointeur en une seule étapeDéfi
DébutantDans ce défi, vous allez vous entraîner à déclarer et à utiliser des pointeurs en Go. Un pointeur est déjà configuré pour vous, et votre tâche consiste à créer un nouveau pointeur qui pointe vers la même valeur.
Complétez le TODO dans le code pour déclarer une nouvelle variable de pointeur appelée 'secondPointer' qui pointe vers la même adresse mémoire que le pointeur existant.
Aide-mémoire
En Go, vous pouvez déclarer des pointeurs en utilisant var avec un type de pointeur ou en utilisant l'opérateur d'adresse avec :=.
Déclarer un pointeur en utilisant var :
var x int = 42
var ptr *int // Déclarer un pointeur vers un entier
ptr = &x // Assigner l'adresse de x à ptrDéclarer et initialiser un pointeur sur une seule ligne en utilisant := :
y := 100
ptr := &y // Déclarer et initialiser le pointeur en une seule étapeAccéder aux valeurs du pointeur :
ptr- l'adresse mémoire*ptr- la valeur à cette adresse
Essayez vous-même
package main
import "fmt"
func main() {
// Voici une variable et un pointeur vers celle-ci
originalValue := 42
pointerToValue := &originalValue
// TODO : Déclarez une nouvelle variable de pointeur nommée 'secondPointer'
// qui pointe vers la même adresse mémoire que 'pointerToValue'
// Ne modifiez pas le code ci-dessous
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
// Modifions la valeur d'origine et voyons tous les pointeurs refléter le changement
originalValue = 100
fmt.Printf("\nAfter changing original value to 100:\n")
fmt.Printf("Original value: %v\n", originalValue)
fmt.Printf("Value through first pointer: %v\n", *pointerToValue)
fmt.Printf("Value through second pointer: %v\n", *secondPointer)
}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