Maison > développement back-end > Golang > Pourquoi le retranchage d'une Go Slice modifie-t-il sa capacité ?

Pourquoi le retranchage d'une Go Slice modifie-t-il sa capacité ?

Barbara Streisand
Libérer: 2024-12-26 13:42:16
original
549 Les gens l'ont consulté

Why Does Re-slicing a Go Slice Change Its Capacity?

Re-découper des tranches dans Golang

Dans Golang, les tranches sont des structures de données flexibles qui permettent un redimensionnement dynamique. Cependant, comprendre le comportement du retranchage des tranches peut prêter à confusion. Examinons le code fourni et expliquons le comportement déroutant de la capacité de c :

func main() {
    b := make([]int, 0, 5) // Create an empty slice with a capacity of 5
}
Copier après la connexion

Ici, b est initialement vide, mais il a une capacité de 5. Cela signifie que le tableau sous-jacent peut contenir jusqu'à 5 éléments.

c := b[:2] // Create a slice c from b, starting at the beginning (index 0) and ending just before index 2
Copier après la connexion

Maintenant, c est une tranche faisant référence aux deux premiers éléments de b. Cependant, c ne crée pas de copie du tableau sous-jacent. C'est toujours une fenêtre sur b.

printSlice("c", c) // Print the length, capacity, and elements of c
// Output: c len=2 cap=5 [0 0]
Copier après la connexion

Comme prévu, c a une longueur de 2 et une capacité de 5. En effet, c peut toujours accéder à l'intégralité du tableau représenté par b, avec les 3 restants. éléments inutilisés potentiellement accessibles par extension.

d := c[2:5] // Create a slice d from c, starting at index 2 and ending at the end (index 5)
Copier après la connexion

Ici, d est une tranche référençant les éléments de c de l'index 2 jusqu'à la fin (index 5). Puisque c a une capacité de 5, d peut s'étendre jusqu'à 3 éléments plus loin.

printSlice("d", d) // Print the length, capacity, and elements of d
// Output: d len=3 cap=3 [0 0 0]
Copier après la connexion

d a une longueur de 3 car il fait référence aux éléments restants de c, et une capacité de 3 car il peut accueillir jusqu'à 3 éléments supplémentaires dans b.

En conclusion, la capacité d'une tranche est déterminée par la capacité du tableau sous-jacent et la position de départ de la tranche dans ce tableau. En comprenant cette relation, les développeurs peuvent manipuler efficacement les tranches et contrôler leur comportement dans les programmes Golang.

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