Maison > développement back-end > Golang > Pourquoi le déréférencement d'un pointeur dans Go ne met-il pas à jour la structure d'origine ?

Pourquoi le déréférencement d'un pointeur dans Go ne met-il pas à jour la structure d'origine ?

Linda Hamilton
Libérer: 2024-12-01 00:26:10
original
878 Les gens l'ont consulté

Why Doesn't Dereferencing a Pointer in Go Update the Original Struct?

Déréférencement de pointeur en Go

En Go, le déréférencement de pointeur implique l'accès à la valeur stockée dans l'adresse mémoire pointée par une variable de pointeur.

Problème :

Dans un exemple fourni par les didacticiels Go, le comportement attendu du déréférencement du pointeur ne se produit pas. Lorsqu'une variable de pointeur est utilisée pour modifier la valeur d'une structure, les modifications ne sont pas propagées à la copie déréférencée de la structure.

Explication :

Le t := * L'opération q crée une copie de la structure pointée par q. Toute modification apportée ultérieurement à q n’affectera pas t. Ce comportement est attendu car Go traite les pointeurs comme des valeurs et les affectations sont des opérations de copie.

Pour observer les modifications apportées via q dans t, il est nécessaire de conserver un pointeur vers la structure plutôt que de copier la valeur. Ceci peut être réalisé en attribuant q à t à la place :

t := q
Copier après la connexion

Comparaison C/C :

Le comportement de déréférencement du pointeur en Go est similaire à celui en C/ C. Dans les deux langages, les pointeurs stockent l’adresse d’une valeur et leur déréférencement donne accès à la valeur réelle. Cependant, en Go, les affectations aux pointeurs aboutissent à la valeur copiée, alors qu'en C/C , elles modifient directement la valeur référencée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal