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
238 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!

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