Maison > Article > développement back-end > Pourquoi la suppression d'éléments dès le début d'une Go Slice modifie-t-elle sa capacité ?
Pourquoi la capacité d'une tranche change-t-elle lors de la suppression des n premiers éléments ?
Dans Go, les tranches sont implémentées sous forme de structures, ressemblant à ce qui suit :
<code class="go">type slice struct { array unsafe.Pointer len int cap int }</code>
Si nous modifions la fonction utilisée pour imprimer la tranche pour inclure le pointeur vers le tableau sous-jacent, nous obtenons ce qui suit sortie :
ptr=0x450000 len=6 cap=6 [2 3 5 7 11 13] ptr=0x450000 len=4 cap=6 [2 3 5 7] ptr=0x450008 len=2 cap=4 [5 7]
Comme vous pouvez le voir, la suppression des deux derniers éléments ne change pas le pointeur, alors que la suppression des deux premiers éléments le fait. En effet, une tranche est essentiellement une fenêtre sur le tableau sous-jacent. La suppression d'éléments depuis le début force la recréation de la tranche dans un nouvel emplacement avec un pointeur différent, tandis que la suppression d'éléments depuis la fin ajuste simplement la longueur de la tranche existante.
Pour plus d'informations, veuillez vous référer à ce qui suit ressources :
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!