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