Ce qui suit est une introduction aux pointeurs Go de la colonne tutoriel Golang J'espère que cela sera utile aux amis dans le besoin !
Combiné avec cet exemple pour analyser
Le résultat :
Combiné avec la base de langage C précédent, dessinez une image pour expliquer pourquoi les valeurs ci-dessus apparaissent. Vérifions d’abord ce que sont ces deux opérateurs dans Go.
①Pour tous les résultats avec un
var a int = 1 définit une variable a avec une valeur de 1, comme le montre la figure suivante :
&a est l'adresse qui stocke la valeur d'une variable
*&a est un pointeur vers &a, *&a = a = 1
②Tous les résultats avec b
var b *int = &a
Similaire à int *b = &a en langage C Définissez un pointeur b pointant vers une variable entière, b pointe vers l'adresse de a.
Donc :
b = &a = 0xc04203c1d0
&b = 0xc042058018 &b est l'adresse réelle de la variable pointeur b, qui est celle après exécution
*&b = *(&b) = b = &a = 0xc04203c1d0
*b = *&a = a = 1
③Tous les résultats avec c
Comme le montre l'image ci-dessus :
var c **int = &b
définit en fait une variable de pointeur pointant vers un pointeur entier
c = &b = 0xc042058018
*c = *&b = b = &a = 0xc04203c1d0
&c est la véritable adresse de cette variable, et ce qui est montré ici est le résultat de l'opération 0xc042068020
* &c Avec l'expérience, vous pouvez constater que *& s'élimine directement = c = 0xc042058018
**c Vous ne savez pas ce que c'est au premier coup d'œil, mais il peut en fait être évalué par conversion
**c = **&b = *b = *&a = a = 1
***&*&*&*&*&c Cela peut être éliminé en premier *& **c = 1
④À propos de x
x = *b = *&a = a = 1
Pour résumer ci-dessus :
& Obtenez l'adresse via la variable * Obtenez la valeur via l'adresse
&a pour obtenir l'adresse en premier, puis "* xxx adresse " obtient la valeur de la variable à l'adresse, c'est-à-dire a
*& peut compenser
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!