Maison > développement back-end > Golang > L'opérateur de déréférencement de Go crée-t-il une copie ou une référence à la structure d'origine ?

L'opérateur de déréférencement de Go crée-t-il une copie ou une référence à la structure d'origine ?

Barbara Streisand
Libérer: 2024-11-28 12:29:10
original
282 Les gens l'ont consulté

Does Go's Dereference Operator Create a Copy or a Reference to the Original Struct?

Déréférencement Go : copies ou non, telle est la question

Lors de l'accès à une structure Go à l'aide de l'opérateur de déréférencement (*), les utilisateurs peuvent je me demande si le résultat est une nouvelle copie de la structure ou une référence à l'objet original.

Comprendre le Comportement

Dans l'extrait de code fourni :

type me struct {
    color string
    total int
}

func study() *me {
    p := me{}
    return &p
}

obj := *study()
Copier après la connexion

study() renvoie un pointeur vers une structure me. Le déréférencer dans obj crée une copie de la structure. Cela ressort clairement des adresses mémoire de &p.color et &obj.color, qui sont différentes.

On pourrait s'attendre à ce que la structure obj déréférencée ait la même adresse mémoire que la structure d'origine, mais ce n'est pas le cas dans cette instance. Ce comportement peut être attribué à la désallocation automatique des variables par Go à la fin de leur portée.

Quand il s'agit en fait d'une référence

Pour obtenir un comportement de référence, on peut attribuer un pointeur directement vers la structure en utilisant :

obj := study()
Copier après la connexion

Dans ce cas, obj sera un pointeur vers la structure me d'origine et se transformera en p ou obj affectera la même structure sous-jacente.

Conclusion

Lors du déréférencement d'une structure dans Go, il est important de comprendre que le résultat est une copie de la structure d'origine à moins que un pointeur vers la structure est explicitement attribué. Ce comportement garantit que les modifications apportées à la structure déréférencée n'affectent pas la structure d'origine, conservant ainsi l'encapsulation et l'indépendance des variables.

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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal