Maison > Article > développement back-end > Quelle est la différence entre un tableau golang et une tranche ?
La différence entre les tableaux et les tranches dans Golang :
● Les tranches sont des types pointeurs, les tableaux sont des types valeur
Quantity Tableaux La longueur de est fixe, mais les tranches ne le sont pas (les tranches sont des tableaux dynamiques)
● Les tranches ont un attribut de plus que les tableaux : capacité (cap)
● La couche inférieure des tranches est constituée de tableaux
Recommandations associées : Tutoriel Golang
Puisque l'un est un type pointeur et l'autre est un type valeur, quelle est la différence ?
Regardez cet exemple
numbers := []int{1, 2, 3, 4, 5, 6} for i, e := range numbers { if i == len(numbers)-1 { numbers[0] += e } else { numbers[i+1] += e } } fmt.Println(numbers)
Le résultat est :
[22 3 6 10 15 21]
Remplacez la tranche par un tableau :
numbers := [...]int{1, 2, 3, 4, 5, 6} for i, e := range numbers { if i == len(numbers)-1 { numbers[0] += e } else { numbers[i+1] += e } } fmt.Println(numbers)
Le résultat est :
[7 3 5 7 9 11]
C'est évident : après le parcours, chaque élément du tableau devient la somme de l'élément actuel et de l'élément précédent ; il en va de même pour le découpage, sauf que chaque élément devient la valeur modifiée de l'élément précédent et la somme des élément actuel et.
Analyse : Lors de la boucle for, les éléments en nombres sont {1,2,3,4,5,6}. Les variables qui reçoivent la boucle for sont i et e, et i sont toutes deux [0,1,2,3,4,5]. Mais e est différent, le tableau est passé par valeur, donc lors du parcours du tableau, e est {1,2,3,4,5,6} ; le découpage passe un pointeur, donc à chaque fois qu'il est accumulé, la valeur modifiée est accumulé.
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!