Maison > développement back-end > Golang > Quelle est la différence entre un tableau golang et une tranche ?

Quelle est la différence entre un tableau golang et une tranche ?

青灯夜游
Libérer: 2019-12-25 18:02:46
original
3506 Les gens l'ont consulté

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)
Copier après la connexion

Le résultat est :

[22 3 6 10 15 21]
Copier après la connexion

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)
Copier après la connexion

Le résultat est :

[7 3 5 7 9 11]
Copier après la connexion

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!

Étiquettes associées:
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