Pourquoi cette tranche change-t-elle sa capacité en Go ?
Dans la diapositive "A Tour of Go" mentionnée, l'extrait contient des opérations sur une tranche d'entiers. Alors que la longueur de la tranche change constamment, la capacité semble diminuer dans la dernière ligne. Ce comportement soulève des questions sur la mutabilité de la capacité des tranches.
Changement de capacité de 6 à 4
La capacité d'une tranche représente le nombre d'emplacements qu'elle peut contenir. Initialement, la tranche a une capacité de 6. À mesure que les données sont supprimées de la fin de la tranche (s = s[2:]), la capacité reste inchangée car la distance entre l'index de départ et la fin du tableau de sauvegarde ne change pas.
Cependant, lorsque l'index de départ de la tranche est avancé en supprimant ses deux premières valeurs (s = s[2:]), la distance entre l'index de départ et la fin du tableau de support diminue, ce qui entraîne un capacité réduite de 4. En effet, la tranche occupe désormais une plus petite partie du tableau.
Pourquoi seule la dernière ligne change de capacité
La capacité ne change que lorsque l'index de départ de la tranche est modifié. Les autres opérations, comme couper la tranche à une longueur nulle ou étendre sa longueur, n'affectent pas la capacité car elles ne modifient pas l'index de départ.
En-tête de tranche
Pour une compréhension plus approfondie, vous pouvez imprimer l'en-tête de la tranche à l'aide de la réflexion, qui montre les modifications apportées à son pointeur de données. Le champ Data de l'en-tête indique l'index de départ de la tranche dans le tableau de support, tandis que Cap représente la capacité.
Lors du dernier appel, le champ Data est décalé vers l'avant, réduisant la capacité en fonction de la distance entre l'index de départ. et la fin du tableau de support est diminuée.
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!