Pointeurs vers des structures
Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 97 sur 109.
Lorsque vous travaillez avec des structures, vous pouvez créer des pointeurs vers celles-ci tout comme avec d'autres types. C'est utile pour transmettre efficacement de grandes structures.
Définissez une structure Person et créez un pointeur vers celle-ci :
type Person struct {
name string
age int
}
func main() {
person := Person{name: "Alice", age: 30}
// Create a pointer to the struct
personPtr := &person
// Access fields through pointer
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
}La sortie montre que nous pouvons accéder aux champs via le pointeur :
Alice
30Vous pouvez également modifier les champs via le pointeur :
personPtr.age = 31
fmt.Println(person.age) // Affiche : 31Défi
DébutantDans ce défi, vous allez vous entraîner à travailler avec des pointeurs vers des structures (structs) en Go. Vous avez une structure Person avec des champs name et age. Votre tâche consiste à mettre à jour les informations de la personne en utilisant un pointeur vers la structure.
Le code crée déjà une structure Person et un pointeur vers celle-ci. Vous devez modifier les informations de la personne via le pointeur.
Aide-mémoire
Créez des pointeurs vers des structs en utilisant l'opérateur & :
type Person struct {
name string
age int
}
person := Person{name: "Alice", age: 30}
personPtr := &personAccédez aux champs de la struct et modifiez-les via des pointeurs :
// Access fields
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)
// Modify fields
personPtr.age = 31Essayez vous-même
package main
import "fmt"
// Structure Person avec les champs name et age
type Person struct {
name string
age int
}
func main() {
// Créer une structure Person
person := Person{
name: "John",
age: 25,
}
// Créer un pointeur vers la structure Person
personPtr := &person
// Afficher les informations originales de la personne
fmt.Println("Original person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
// TODO: Utiliser le pointeur pour changer le nom de la personne en "Jane" et l'âge à 30
// Astuce : Vous pouvez accéder aux champs de la structure via un pointeur en utilisant la notation par point
// Afficher les informations mises à jour de la personne
fmt.Println("Updated person:")
fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}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 actions10Types composites : Tableaux
Introduction aux tableauxDéclaration de tableauxInitialisation de tableauxAccès aux éléments d'un tableauTaille d'un tableau avec `len`Itération sur les tableauxTableaux multidimensionnels13Types composites : Structures
Définition de types personnalisésCréation d'instances de structuresAccès aux champs d'une structurePointeurs vers des structuresInitialisation de structuresStructures imbriquéesStructures anonymesRécapitulatif - Structures de données personnalisées2Variables 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