Maison > développement back-end > Golang > Pourquoi trancher une Go Slice réduit-il parfois la capacité, mais pas toujours ?

Pourquoi trancher une Go Slice réduit-il parfois la capacité, mais pas toujours ?

DDD
Libérer: 2024-12-04 07:50:12
original
322 Les gens l'ont consulté

Why Does Slicing a Go Slice Reduce Capacity Sometimes, But Not Always?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal