Maison > développement back-end > Golang > Go Slices : quelle est la différence entre la capacité et la longueur ?

Go Slices : quelle est la différence entre la capacité et la longueur ?

DDD
Libérer: 2024-12-17 14:26:10
original
847 Les gens l'ont consulté

Go Slices: What's the Difference Between Capacity and Length?

Go Slices : démystifier la capacité et la longueur

Dans Go, les tranches sont une structure de données puissante pour travailler avec des collections de données. Deux concepts importants liés aux tranches sont la capacité et la longueur, qui peuvent être déroutants à comprendre au début.

Considérez l'exemple suivant :

func main() {
  a := make([]int, 5)
  // [0,0,0,0,0] len=5 cap=5

  b := make([]int, 0, 5)
  // [] len=0 cap=5

  c := b[:2]
  // [0,0] len=2 cap=5

  d := c[2:5]
  // [0,0,0] len=3 cap=3
}
Copier après la connexion

Capacité par rapport à la longueur

Dans cet exemple, a a une longueur de 5 (le nombre d'éléments qu'il contient) et une capacité de 5 (le nombre d'éléments qu'il peut contenir avant réaffectation). b a une longueur de 0 et une capacité de 5, ce qui indique qu'il ne contient initialement aucun élément mais qu'il a le potentiel de croître pour contenir jusqu'à 5 éléments.

Éléments mis à zéro

Lorsque vous créez une tranche avec make([]int, 0, 5) comme dans b, un tableau de sauvegarde est créé et initialisé avec la valeur zéro pour ses éléments. Cela signifie que même si b n'a initialement aucun élément, son tableau de support contient cinq valeurs mises à zéro.

Lorsque vous découpez une tranche, vous créez une nouvelle tranche qui partage le même tableau de support. Par conséquent, lorsque vous affectez c := b[:2], vous créez une nouvelle tranche qui fait référence aux deux premiers éléments mis à zéro du tableau de sauvegarde. Par conséquent, c a une longueur de 2 et contient les valeurs [0,0].

Capacité des tranches découpées

Lorsque vous découpez une tranche, la capacité du la tranche résultante est déterminée par la différence entre le dernier index de l'expression de tranche et le premier index. Dans le cas de d := c[2:5], cette différence est de 3 (5 - 2). Par conséquent, d a une capacité de 3.

Conclusion

Comprendre la capacité et la longueur est crucial pour travailler efficacement avec des tranches en Go. N'oubliez pas que les tranches font toujours référence à un tableau de sauvegarde et que la capacité représente la taille de ce tableau de sauvegarde. En découpant des tranches, vous créez de nouvelles tranches qui partagent le même tableau de support et héritent de ses propriétés, y compris sa capacité.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal