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.
Essayez 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é-valeurEntraînez-vous par vous-même : Compilateur Go en ligne