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

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

青灯夜游
青灯夜游original
2019-12-25 18:02:463422parcourir

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!

Déclaration:
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
Article précédent:Quelle langue est le golang ?Article suivant:Quelle langue est le golang ?