Dans Go, les pointeurs sont des variables qui stockent l'adresse d'une autre variable. Ils vous permettent d'accéder indirectement à la valeur de la variable référencée en la déréférençant à l'aide de l'opérateur *.
Cependant, lorsque vous travaillez avec des pointeurs, vous pouvez rencontrer des problèmes si vous tentez de déréférencer un pointeur nul. En effet, aucun pointeur nul n'a été attribué pour pointer vers un emplacement mémoire valide.
Considérez le code suivant :
package main import ( "fmt" "reflect" ) func main() { var guess *int fmt.Println(reflect.TypeOf(guess)) *guess = 12345 fmt.Println(guess) }
Ce code tente de définir la valeur du pointeur *devinez à 12345. Cependant, cela entraînera une panique d'exécution en raison d'une adresse mémoire illégale ou d'un déréférencement de pointeur nul.
La raison de cette erreur est que le pointeur de supposition est nul par défaut. Lorsque vous essayez de déréférencer un pointeur nul, le programme plante.
Pour résoudre ce problème, vous devez d'abord attribuer le pointeur à un emplacement mémoire valide. Vous pouvez utiliser la fonction new() intégrée pour créer une nouvelle variable int et attribuer son adresse au pointeur de devinette :
var guess *int guess = new(int) *guess = 12345
Maintenant, le pointeur de devinette pointe vers une variable int valide et vous pouvez déréférencer en toute sécurité pour définir ou obtenir sa valeur.
Une autre façon d'attribuer une valeur à un pointeur consiste à utiliser l'opérateur & pour obtenir l'adresse d'un pointeur existant. variable :
value := 12345 guess := &value
Ici, le pointeur de supposition pointe maintenant vers la variable de valeur. Toute modification apportée à la valeur pointée via le pointeur de supposition affectera également la variable de valeur d'origine.
En comprenant le concept des pointeurs nuls et comment les attribuer à des emplacements de mémoire valides, vous pouvez utiliser efficacement les pointeurs dans votre Go programmes pour accéder indirectement aux données et les manipuler.
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!