Maison >développement back-end >Golang >Go Pointeurs : quand utiliser `&` et `*` ?
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... }
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'
Résumé d'utilisation
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!