Maison >développement back-end >Golang >Comment attribuer en toute sécurité une valeur entière à un pointeur entier dans Go ?

Comment attribuer en toute sécurité une valeur entière à un pointeur entier dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-01 07:57:111018parcourir

How to Safely Assign an Integer Value to an Integer Pointer in Go?

Définition d'un pointeur Int sur une valeur Int dans Go

Lorsque vous essayez d'attribuer une valeur à une variable de pointeur, il est crucial de s'assurer que le pointeur n’est pas nul. Tenter de déréférencer un pointeur nul peut conduire à une panique d'exécution, comme vous l'avez constaté.

Solution :

Pour définir la valeur pointée, le pointeur doit pointer vers quelque chose de valide . Vous pouvez obtenir un pointeur vers un int de valeur zéro en utilisant la fonction new() :

guess := new(int)
*guess = 12345

Cela alloue de la mémoire pour la variable int et définit le pointeur pour qu'il pointe vers cette mémoire. Vous pouvez maintenant modifier la valeur pointée via le pointeur.

Déclaration simplifiée :

Vous pouvez simplifier la déclaration et l'initialisation à l'aide d'une courte déclaration de variable :

guess := new(int)
*guess = 12345

Approche alternative :

Vous pouvez également attribuer l'adresse d'une variable existante au pointeur :

value := 12345
guess := &value

Cela modifie la valeur du pointeur, pas la valeur pointée. Cependant, dans cet exemple simple, l'effet est similaire.

Modification de la valeur pointée :

Changer la valeur pointée via le pointeur modifiera également la valeur de la variable cela indique. À l'inverse, modifier la valeur de la variable affectera la valeur pointée :

var value int
guess := &value
value = 12345
fmt.Println(*guess)
// Prints: 12345

L'utilisation d'un pointeur offre un moyen pratique de modifier indirectement la valeur d'une variable. Cependant, il est important d'initialiser correctement le pointeur pour éviter les erreurs de pointeur nulles et garantir l'intégrité des données.

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:
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