English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un pointeur en langage Go est une variable utilisée pour stocker l'adresse mémoire d'une autre variable. Un pointeur est une variable spéciale, donc il peut pointer vers n'importe quel type de variable. En général, cela ressemble à une chaîne de pointeurs. Lorsque nous définissons un pointeur de pointeur, le premier pointeur est utilisé pour stocker l'adresse du second pointeur. Ce concept est parfois appelé
Double pointeur
. * Comment déclarer un pointeur de pointeur en Golang ?Pour déclarer un pointeur de type Pointer comme dans la déclaration de pointeur en Go. La différence réside en ce que nous devons placer un ' supplémentaire avant le nom du pointeurC'est généralement, lorsque nous utilisons
Exemple1:var clépt2et la déclaration de type de pointeur variable peuvent accomplir cette opération.pt1Dans le programme suivant, le pointeurpt2stocké* pt2valeur. Déréférencementvl'adresse, ou vous pouvez dire le pointeurpt1valeur. Si vous essayez** pt2,Alors, la variablevvaleur, c'est-à-dire100.
package main import "fmt" func main() { //Variable de type entier var V int = 100 //Obtenir un pointeur //type entier var pt1 *int = &V //Obtenir le pointeur pointé //pointe vers pt1L'adresse de pointeur de //Stocker l'adresse de pointeur de pt1Convertir en pt2 var pt2 **int = &pt1 fmt.Println("La valeur de la variable V est égale à ", V) fmt.Println("L'adresse de la variable V est égale à ", &V) fmt.Println("pt1valeur est égale à1) fmt.Println("pt1adresse est égale à1) fmt.Println("pt2valeur est égale à2) //Déréférencement //pointeur de pointeur fmt.Println("pt2La valeur à l'adresse (*pt2)= *pt2) //Les double pointeurs donneront la valeur de la variable V fmt.Println("*(pt2La valeur à l'adresse) ou **pt2 =" **pt2) }
Sortie :
La valeur de la variable V est égale à 100 L'adresse de la variable V est égale à 0xc000062090 pt1valeur est égale à 0xc000062090 pt1L'adresse est égale à 0xc00008c018 pt2valeur est égale à 0xc00008c018 pt2La valeur à l'adresse (*pt2) = 0xc000062090 *(pt2La valeur à l'adresse) ou **pt2 = 100
Exemple2:Laissez-nous apporter quelques modifications au programme ci-dessus. Pour assigner de nouvelles valeurs aux pointeurs en utilisant l'affectation de déréférencement, voici comment il se passe :
// Un programme Go pour expliquer le concept de pointeur pointant vers un pointeur package main import "fmt" func main() { // Définir une variable de type int var v int = 100 // Un pointeur de type entier var pt1 *int = &v //Obtenir le pointeur pointé //pointe vers pt1L'adresse de pointeur de //Stocker l'adresse de pointeur de pt1Convertir en pt2 var pt2 **int = &pt1 fmt.Println("La valeur de la variable v est égale à ", v) //Modifier la valeur de v par affectation //Le pointeur pt pointe vers1nouvelle valeur *pt1 = 200 fmt.Println("Modifier pt1La valeur stockée après dans v est égale à ", v) //Modifier la valeur de v par affectation //Le pointeur pt pointe vers2nouvelle valeur **pt2 = 300 fmt.Println("Modifier pt2La valeur stockée après dans v est égale à ", v) }
Sortie :
La valeur de la variable v est égale à 100 Modifier pt1La valeur stockée après dans v est égale à 200 Modifier pt2La valeur stockée après dans v est égale à 300
Connaissances connexes :Pointeur Go