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