Assignation de 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 transmet un pointeur vers une structure Test, dans le but 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 guise de 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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3