Maison > développement back-end > Golang > Go Pointeurs : quand utiliser `&` et `*` ?

Go Pointeurs : quand utiliser `&` et `*` ?

Patricia Arquette
Libérer: 2024-12-02 08:55:11
original
268 Les gens l'ont consulté

Go Pointers: When to Use `&` and `*`?

Comprendre les pointeurs (& et *)

Go nécessite souvent de transmettre des variables comme arguments aux fonctions. Cependant, cela peut prêter à confusion lorsque l’on rencontre des erreurs lors de telles opérations. Cet article clarifie la différence entre les pointeurs & et *, en expliquant quand chacun doit être utilisé.

Pointeurs et adresses

Les pointeurs sont des variables qui stockent l'adresse d'une autre variable dans mémoire. L'opérateur & récupère l'adresse d'une variable. Par exemple, si « u » est une structure utilisateur, « &u » renvoie l'adresse de « u ».

Décoder JSON avec &

Pour comprendre l'opérateur & , considérons le code suivant :

var u User

if err := decoder.Decode(&u); err != nil {
    // Code to handle error...
}
Copier après la connexion

La fonction json.Decode attend un pointeur dans lequel décoder les données JSON. Dans cet exemple, « u » est uniquement une structure utilisateur, pas un pointeur. En utilisant '&u', nous fournissons à la fonction l'adresse de 'u', permettant au décodage de réussir.

Pointeurs et redirection

L'opérateur peut être considéré comme une « redirection » vers la valeur stockée à l’adresse d’un pointeur. Par exemple, si le pointeur 'x' stocke l'adresse de 'y', 'x' nous donne la valeur de 'y'.

Considérez le code suivant :

x := new(User) // Creates a pointer to a User struct
*x = y        // Assigns the value of 'y' to the struct pointed to by 'x'
fmt.Println(*x) // Prints the value of 'y'
Copier après la connexion

Résumé d'utilisation

  • Utiliser & pour obtenir l'adresse d'une variable ou pour passer un pointeur vers une fonction qui en nécessite un.
  • Utilisez * pour accéder à la valeur stockée à l'adresse d'un pointeur.
  • Évitez d'utiliser * sur des non-pointeurs, car cela entraînerait une erreur .

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!

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