Modification mystérieuse du tableau de Golang : tranches contre tableaux
Contrairement à C , où les tableaux sont intrinsèquement passés par référence, le comportement de Go semble contradictoire. Pour comprendre cet apparent paradoxe, plongeons dans le monde des tranches de Golang.
Lorsque des tableaux sont déclarés dans Go sans spécifier de longueur fixe, ils deviennent des tranches. Ces tranches sont de simples descripteurs qui pointent vers une section d'un tableau sous-jacent. Lorsqu'il est transmis aux fonctions, seul l'en-tête (un pointeur vers le premier élément, la longueur et la capacité) est copié.
Par conséquent, toute modification apportée à la tranche dans la fonction affecte directement la tranche d'origine. En effet, ils font tous deux référence au même tableau sous-jacent. Ce comportement ressemble au mécanisme de passage par référence en C , même si les tableaux eux-mêmes ne sont pas explicitement passés par référence dans Go.
Pour résumer, la distinction de Go découle de la distinction entre tableaux et tranches. Les tableaux sont transmis par valeur, tandis que les tranches sont transmises par référence au tableau sous-jacent. Pour les tranches, toute modification apportée à une fonction sera reflétée dans la tranche d'origine.
Lectures complémentaires pour une plongée approfondie dans les tranches :
Questions connexes pour référence :
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!