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