Maison > développement back-end > Golang > Pourquoi les tranches Go « c » et « d » ont-elles des valeurs et des capacités différentes après le découpage ?

Pourquoi les tranches Go « c » et « d » ont-elles des valeurs et des capacités différentes après le découpage ?

Mary-Kate Olsen
Libérer: 2024-12-21 02:35:10
original
311 Les gens l'ont consulté

Why Do Go Slices `c` and `d` Have Different Values and Capacities After Slicing?

Comprendre la capacité et la longueur des tranches dans Go

Lors de l'apprentissage de Go à partir de son didacticiel, on peut rencontrer des questions telles que :

Question :

Dans le code ci-dessous, pourquoi les tranches c et d sont-elles initialisées avec des valeurs différentes valeurs et capacités ?

func main() {
  a := make([]int, 5)
  b := make([]int, 0, 5)
  c := b[:2]
  d := c[2:5]
}
Copier après la connexion

Réponse :

Dans Go, les tranches sont adossées à des tableaux. Lorsqu'une tranche est créée avec make, le tableau de sauvegarde est initialisé avec sa valeur zéro. Dans ce cas, il s'agit d'un tableau d'entiers, chacun initialisé à 0.

Lorsque c est créé en tant que tranche de b, il partage le même tableau de support que b. Puisque b a été créé avec un tableau de longueur nulle, les deux premiers éléments du tableau de support sont 0. Ainsi, c a une longueur de 2 et ses éléments sont tous deux 0.

d est créé comme une tranche de c commençant à l'index 2. Il partage également le même tableau de support que c. Cependant, sa capacité est différente car il s'agit d'une expression de tranche complète. Une expression de tranche complète a une capacité égale à la différence entre son premier et son dernier index, qui dans ce cas est 5 - 2 = 3.

Ressources supplémentaires :

  • [Go Slices : utilisation et éléments internes](https://blog.golang.org/slices)
  • [Tableaux, tranches (et chaînes) : les mécanismes de « append »](https://blog.golang.org/slices-appending)

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!

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