Contenu du cours
Introduction à Golang
Introduction à Golang
Longueur vs Capacité
Nous pouvons déterminer la longueur d'un tableau ou d'une tranche en utilisant la fonction len
:
index
randomNumbers := [] int { 1, 4, 5, 7, 9, 10, 12 } fmt.Println(len(randomNumbers)) // Output: 7 numbersSlice := randomNumbers[2:7] fmt.Println(len(numbersSlice)) // Output: 5
Nous pouvons déterminer la capacité d'un tableau ou d'une tranche en utilisant la fonction cap
:
La longueur et la capacité d'un tableau sont toujours les mêmes. Cependant, pour une tranche, la capacité peut différer de la longueur. Par exemple, dans le cas où une tranche est créée à partir d'un tableau, la capacité est supérieure à la longueur :
index
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(len(numbersSlice)) // Output: 2 fmt.Println(cap(numbersSlice)) // Output: 6
La capacité d'une tranche est le nombre d'éléments allant de l'startingIndex
de la tranche à la fin du tableau original à partir duquel elle a été créée. Dans l'exemple ci-dessus, elle est de 6
.
Rappelez-vous que modifier une tranche modifie également le tableau original. Par conséquent, dans l'exemple donné, ajouter un élément (ou une valeur) à une tranche met essentiellement à jour l'élément suivant l'index de fin de la tranche dans le tableau original. En d'autres termes, cela augmente la taille de la tranche et met à jour les éléments du tableau original en fonction des éléments/valeurs ajoutés. Cela deviendra plus clair avec un exemple :
index
randomNumbers := [7] int { 1, 4, 5, 7, 9, 10, 12 } numbersSlice := randomNumbers[1:3] fmt.Println(randomNumbers) // Output: [1 4 5 7 9 10 12] numbersSlice = append(numbersSlice, 20, 30, 40) fmt.Println(randomNumbers) // Output: [1 4 5 20 30 40 12]
La capacité est utile pour déterminer combien d'éléments nous pouvons ajouter à la tranche. Si nous dépassons la capacité de la tranche, la fonction append
crée et renvoie une nouvelle tranche qui n'est pas connectée à une partie du tableau original. Par conséquent, elle devient détachée du tableau original.
Vous pouvez voir l'exemple suivant : le tableau original reste inchangé même si nous avons ajouté plus d'éléments à sa tranche :
index
numbers := [] int { 1, 2, 3, 4 } numSlice := numbers[1:3] fmt.Println(numbers) // Outputs: [1 2 3 4] fmt.Println(numSlice) // Outputs: [2 3] fmt.Println(cap(numSlice)) // Outputs: 3 numSlice = append(numSlice, 9, 10) fmt.Println(numSlice) // Outputs: [2 3 9 10] fmt.Println(numbers) // Outputs: [1 2 3 4]
Cela s'est produit parce que la tranche avait une capacité de 3, que nous avons dépassée. En conséquence, la fonction append
a renvoyé une nouvelle tranche qui ne fait plus référence au tableau d'origine.
Merci pour vos commentaires !