Comprendre la diminution de la capacité des tranches après le découpage
Dans Go, une tranche est une structure de données flexible qui représente une section contiguë d'un tableau sous-jacent. Lorsque vous découpez une tranche, vous créez une nouvelle tranche qui fait référence à un sous-ensemble des données de la tranche d'origine.
Pourquoi s = s[2:] diminue-t-il la capacité, alors que s = s[:4 ] et s = s[:0] ne le font pas ?
La ligne s = s[:4] étend la longueur de la tranche pour inclure les quatre premiers éléments de la tranche originale. Cela ne change pas la capacité car le tableau sous-jacent a toujours une capacité suffisante pour accueillir la tranche étendue.
D'un autre côté, s = s[:0] crée une tranche de longueur nulle. La capacité reste inchangée, car le tableau sous-jacent a toujours la capacité de contenir les éléments d'origine.
Cependant, s = s[2:] supprime les deux premiers éléments de la tranche. Cela crée une nouvelle tranche qui fait référence au sous-ensemble de la tranche d'origine commençant à l'index 2. La capacité diminue car la nouvelle tranche n'a plus accès aux deux premiers éléments.
Pouvez-vous récupérer le premier deux éléments après les avoir déposés avec s = s[2:]?
Non, vous ne pouvez pas récupérer les deux premiers éléments après les avoir découpés avec s = s[2:]. Le découpage crée une nouvelle tranche avec un nouveau pointeur vers le tableau sous-jacent. Lorsque vous supprimez des éléments depuis le début, le pointeur est déplacé vers le nouvel index de départ et les anciens éléments sont inaccessibles.
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!