Incapacité de Go à dépasser le pointeur vers une tranche
Dans Go, il est courant de rencontrer l'erreur "Impossible de dépasser le pointeur vers une tranche" lorsque vous tentez de parcourir un pointeur de tranche. Cette erreur provient d'une hypothèse erronée selon laquelle le pointeur serait automatiquement déréférencé lors de l'itération.
Malheureusement, Go ne déréférence pas implicitement les types pointeur vers tranche. La raison en est que les tranches elles-mêmes agissent comme des pointeurs vers des tableaux. Passer une tranche à une fonction donne déjà à la fonction accès aux données sous-jacentes, éliminant ainsi le besoin d'un pointeur supplémentaire.
Comme expliqué dans le livre "Effective Go", "Si une fonction prend un argument de tranche, les changements cela fait que les éléments de la tranche seront visibles à l'appelant, analogue au passage d'un pointeur vers le tableau sous-jacent. "
En interne, une tranche est composée de :
Cette structure compacte rend le pointeur inutile, ce qui entraîne l'impossibilité de passer d'un pointeur à une tranche.
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!