Maison > développement back-end > Golang > Les canaux Go sont-ils transmis par référence ou par valeur ?

Les canaux Go sont-ils transmis par référence ou par valeur ?

Mary-Kate Olsen
Libérer: 2024-11-17 18:46:02
original
767 Les gens l'ont consulté

Are Go Channels Passed by Reference or Value?

Les chaînes sont-elles implicitement transmises par référence ?

La visite guidée Go fournit un exemple de chaînes qui soulève des questions sur leur mécanisme de transmission. En passant un canal dans la fonction somme, les modifications qui y sont apportées au sein de la fonction persistent, laissant ouverte la possibilité de passage de référence implicite.

Explication

Techniquement, les canaux sont copiés lorsqu'ils sont transmis car make crée une mémoire allouée au tas qui agit efficacement comme un pointeur. Cependant, ce pointeur n'est pas exposé, ce qui permet aux canaux d'être traités comme des types de référence.

La spécification précise que la fonction make intégrée renvoie une valeur de type T (et non *T) et initialise la mémoire. Lorsqu'il est utilisé avec des canaux, make initialise le canal et le rend utilisable comme type de référence.

Implications

Ce comportement signifie que lorsque vous transmettez des canaux créés avec make dans des fonctions , vous pouvez y lire et y écrire sans copier les données sous-jacentes.

Types de référence et types de valeur

Les types suivants sont transmis par référence dans Aller :

  • Tranches
  • Cartes
  • Canaux
  • Pointeurs
  • Fonctions

Données les types comme les nombres, les booléens et les structures sont copiés lorsqu'ils sont transmis aux fonctions.

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