Maison > développement back-end > Golang > le corps du texte

Pourquoi l'affectation du pointeur dans les fonctions Go n'affecte-t-elle parfois pas la valeur d'origine ?

DDD
Libérer: 2024-10-28 01:38:02
original
161 Les gens l'ont consulté

Why Does Pointer Assignment in Go Functions Sometimes Not Affect the Original Value?

Affectation d'un pointeur dans les fonctions Go : pourquoi des résultats différents ?

Lorsque vous passez un pointeur vers une fonction dans Go, il est crucial de comprendre comment le le pointeur est utilisé et ses implications sur la valeur d'origine. Cette discussion tourne autour d'un extrait de code qui passe un pointeur vers une structure Test, dans l'intention de modifier son champ Valeur.

Le premier extrait de code, malgré la tentative de modification du champ Valeur en attribuant une nouvelle structure Test au pointeur (*p = Test{4}), ne parvient pas à modifier la valeur réelle. En effet, il réaffecte simplement la variable de pointeur p, et non la valeur pointée. La variable p dans la fonction f() existe indépendamment et n'a aucun impact sur la valeur pointée par la variable p dans main().

En revanche, le deuxième extrait de code, où p.Value est explicitement défini sur 4, modifie avec succès le champ Valeur. En effet, l'opérateur déréférence le pointeur, permettant l'accès et la modification de la valeur réelle pointée.

En remarque supplémentaire, il est possible de modifier l'adresse stockée dans la variable de pointeur de la fonction main() en passant son adresse (*) à la fonction f(). Cependant, cette approche est moins efficace et moins pratique que la modification directe de la valeur pointée à l'aide de p.Value.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!