Maison > développement back-end > Golang > Comment modifier la valeur d'un type simple à l'aide d'un récepteur pointeur dans Go ?

Comment modifier la valeur d'un type simple à l'aide d'un récepteur pointeur dans Go ?

Linda Hamilton
Libérer: 2024-11-19 11:32:02
original
495 Les gens l'ont consulté

How to Modify a Simple Type's Value Using a Pointer Receiver in Go?

Modifier la valeur d'un type simple via un récepteur de pointeur dans Go

Modifier la valeur d'un type simple via une méthode de récepteur de pointeur peut être un tâche courante dans Go. Cependant, comprendre comment les pointeurs se comportent dans ce contexte est crucial.

Dans l'exemple fourni :

<br>tapez FooInt int</p>
<p>func (fi *FooInt ) FromString(i string) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">num, _ := strconv.Atoi(i)
tmp := FooInt(num)
fi = &tmp
Copier après la connexion

}

Lorsqu'un pointeur est passé en tant que récepteur, une copie de ce pointeur est créée dans la méthode . Toute modification apportée à la copie à l'intérieur de la méthode n'affectera pas le pointeur d'origine.

Dans l'extrait de code, *fi est une copie du pointeur fi transmis à la méthode FromString. Lorsque vous attribuez &tmp à *fi, vous modifiez essentiellement la valeur de la copie, pas le pointeur fi d'origine.

Pour modifier la valeur du pointeur d'origine, vous devez soit :

  • Renvoyer la nouvelle valeur du pointeur :

    <br> func (fi <em>FooInt) FromString(i string) </em>FooInt {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      return &tmp
    Copier après la connexion

}

  • Passez un pointeur non nul vers la valeur que vous souhaitez modifier :

    <br> func (fi <em>FooInt) FromString(i string, p </em>*FooInt) {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      tmp := FooInt(num)
      *p = &tmp
    Copier après la connexion
  • }

  • Assurez-vous que le récepteur n'est pas nul :

    <br> func (fi *FooInt) FromString(i string) {</p>
    <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">  num, _ := strconv.Atoi(i)
      *fi = FooInt(num)
    Copier après la connexion
  • }

    En vous assurant que le récepteur est un pointeur valide et en modifiant la valeur pointée à l'intérieur de la méthode, vous pouvez modifier efficacement la valeur du type simple d'origine via un pointeur récepteur.

    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!

    source:php.cn
    Article précédent:Comment utiliser des proxys avec les requêtes UTLS et HTTP 1.1 ? Article suivant:Comment gérer les différences de type lors de l’accès à MongoDB depuis Go ?
    Déclaration de ce site Web
    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
    Derniers articles par auteur
    Derniers numéros
    Rubriques connexes
    Plus>
    Recommandations populaires
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal