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 }
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
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]
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)
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]
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!