Maison > développement back-end > Golang > Comment le déréférencement du pointeur affecte-t-il la copie de structure dans Go ?

Comment le déréférencement du pointeur affecte-t-il la copie de structure dans Go ?

Barbara Streisand
Libérer: 2024-12-01 10:02:09
original
383 Les gens l'ont consulté

How Does Pointer Dereferencing Affect Struct Copying in Go?

Déréférencement de pointeur dans Go expliqué

Pour comprendre le déréférencement de pointeur, nous examinerons l'exemple de code Go que vous avez fourni. Dans l'exemple d'origine, plusieurs instances de la structure Vertex sont créées, dont *q qui est un pointeur vers un Vertex. Dans votre version modifiée, vous attribuez la valeur déréférencée de *q à t. Cependant, la principale différence est que dans votre modification, vous remplacez q.X par 4, ce qui met à jour l'instance d'origine pointée par q.

Le pointeur *q pointe vers la même instance de structure sous-jacente que q. Ainsi, en modifiant la valeur de q.X, vous modifiez la structure d'origine et ne créez pas de copie. Par conséquent, lorsque vous imprimez t après avoir modifié q.X, vous remarquerez que t ne reflète pas le changement car t stocke une copie de la structure d'origine et ne pointe pas vers le même emplacement que q.

À observer ces modifications via un pointeur, vous devez directement attribuer q à t au lieu de le déréférencer. Dans l'exemple C/C que vous avez mentionné, le comportement est similaire. Le déréférencement d'un pointeur (par exemple, *q) crée une copie de la valeur, tandis que l'attribution directe du pointeur (par exemple, t = q) vous permet de modifier la valeur d'origine via le pointeur.

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