Maison > développement back-end > Golang > le corps du texte

Pourquoi la suppression des éléments de tranche au début réduit-elle la capacité ?

Mary-Kate Olsen
Libérer: 2024-11-05 10:38:02
original
239 Les gens l'ont consulté

Why Does Dropping Slice Elements at the Beginning Reduce Capacity?

Go Tour #11 : Comprendre les changements de capacité des tranches

Un tour de Go démontre le comportement des tranches, où une tranche d'entiers est initialisée et modifiée via une série de opérations. Une observation déroutante dans la démonstration est la réduction de la capacité des tranches après la suppression des deux premiers éléments de la dernière ligne.

Cause du changement de capacité

Les tranches sont soutenues par un tableau et la suppression des éléments à le début d'une tranche déplace effectivement le point de départ de la tranche dans le tableau. Cela réduit le nombre d'éléments entre le début de la tranche et la fin du tableau, ce qui entraîne une capacité plus petite.

Non-impact de la suppression d'éléments à la fin

La suppression d'éléments à la fin de la tranche ne n'affecte pas sa capacité car il ne modifie pas la distance entre le début de la tranche et la fin du tableau. La tranche occupe toujours la même plage d'emplacements dans le tableau de support.

Le tableau de support reste inchangé

Il est important de noter que ces opérations modifient la tranche elle-même, et non le tableau de support. Le tableau reste inchangé tout au long du processus.

Explication détaillée avec impression améliorée

En imprimant l'en-tête de tranche, nous pouvons observer les changements plus clairement :

<code class="go">func printSlice(s []int) {
    sh := (*reflect.SliceHeader)(unsafe.Pointer(&s))
    fmt.Printf("header=%+v len=%d cap=%d %v\n", sh, len(s), cap(s), s)
}</code>
Copier après la connexion

La sortie montre comment le pointeur de données se déplace lorsque des éléments sont supprimés depuis le début ou la fin de la tranche :

header=&{Data:272990208 Len:6 Cap:6} len=6 cap=6 [2 3 5 7 11 13]
header=&{Data:272990208 Len:0 Cap:6} len=0 cap=6 []
header=&{Data:272990208 Len:4 Cap:6} len=4 cap=6 [2 3 5 7]
header=&{Data:272990216 Len:2 Cap:4} len=2 cap=4 [5 7]
Copier après la connexion

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!