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 ?
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
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!