Outils pour utilisateurs

Outils du site


cours:informatique:dev:golang:demarrer_avec_go:320_slice_variable

Ceci est une ancienne révision du document !


Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.

Allocation dynamique de tranche

:TODO_DOCUPDATE:

La fonction make() peut être utilisée pour créer (entre autre) des tranches (slice).

La première façon de créer une slice, nous en avons parlé consiste à créer le tableau sous-jacent puis à créer la slice.

// Déclaration d'un tableau de 5 entiers, definition implicite 
// à la valeur par défaut du type int (0)
var arr [5]int
 
// Déclaration de la slice à partir du tableau arr
var sli1 = arr[2:]

Une deuxième possibilité consiste à initialiser la tranche directement avec une définition littérale de slice.

// Définition littérale de slice
var sli2 = []int {1, 2, 3, 4, 5}

L'utilisation de make() est la troisième méthode : vous créez la tranche mais vous n'initialisez pas avec des valeurs particulières.

C'est un usage courant : vous souhaitez utiliser la slice parce qu'elle a une taille variable, et que vous voulez l'initialiser à une taille particulière.

Pour cela on peut appeler la fonction make. Il y a deux manières de l'appeler : avec deux ou trois arguments.

Si vous appelez make() avec deux arguments, le premier argument est le type d'objets qu'ils vont se trouver à l'intérieur de la tranche. Donc, la tranche de réponse, la tranche de chaîne ou quelque chose comme ça, ce serait le premier argument, Int , String, puis le deuxième argument serait la longueur de la tranche. Maintenant, lorsque vous utilisez « make » pour créer une tranche, la longueur est égale à la capacité, car cela crée le tableau sous-jacent, et le tableau a exactement la même taille que la tranche. La longueur et la capacité sont donc les mêmes. C'est de toute façon lorsque vous utilisez une version à deux arguments de « make ». Donc, vous pouvez voir ici que SLI est égal à make, vous dites un int entre crochets pour indiquer le type, puis 10. Donc, comme j'ai avancé deux arguments, tout va bien. La longueur et la capacité sont identiques. Ainsi, le tableau sous-jacent a la même taille que la tranche, et la tranche pointe vers le début, commence au début du tableau sous-jacent. Maintenant, la version à trois arguments de « make », vous spécifiez à la place la longueur et la capacité séparément. Cela signifie donc que le tableau sous-jacent est en fait plus grand que la tranche. Donc, dans ce cas, nous avons obtenu SLI égal à make. Mais, d'abord, nous vous donnons le premier argument, le type bracket int. Le deuxième argument est la longueur de la tranche. Le troisième argument est la capacité, c'est-à-dire la taille du tableau. Donc, dans ce cas, notre tranche est de taille 10, mais le tableau est de taille 15, nous pouvons donc augmenter la tranche jusqu'à la taille 15 si nous le voulons. Il existe donc une fonction « ajout » qui peut être utilisée avec des tranches, et elle est utilisée pour augmenter la taille d'une tranche. Donc, si vous souhaitez ajouter des éléments à la fin d'une tranche et augmenter ainsi la taille de la tranche, utilisez la fonction « ajouter ». Notez maintenant qu'il s'agit d'un avantage clé par rapport aux tableaux classiques que vous voyez dans les langues normales. Vous ne pouvez pas simplement ajouter des éléments à la fin d'un tableau et augmenter continuellement sa taille, mais vous pouvez le faire avec la tranche. Donc, il ajoute l'élément, vous pouvez ajouter un ou plusieurs éléments. Dans ce cas, nous allons en faire une, mais elle ajoute l'élément à la fin de la tranche. Cela signifie qu'il l'insère dans le tableau sous-jacent, de sorte qu'il augmente la tranche jusqu'à la capacité du tableau sous-jacent, et il augmente la taille du tableau si nécessaire. Ainsi, si vous atteignez les limites de la taille du tableau, cela créera un nouveau tableau sous-jacent plus grand. Ainsi, ajouter ne doit jamais cesser d'ajouter. Vous pouvez en ajouter en permanence même au-delà de la taille du tableau, et cela augmentera simplement la taille du tableau. Vous ne voulez pas le faire, il y a une pénalité de temps pour cela, mais c'est ce que vous ferez. Ainsi, par exemple, nous créons une tranche, SLI, que nous appelons « make ». Ainsi, la longueur de la tranche est nulle, mais la longueur du tableau sous-jacent est de trois. Alors, je veux mettre quelque chose dans la tranche. Donc, la tranche est vide, c'est vrai, la taille est nulle. Donc, je dis que j'ajoute le numéro 100 à la tranche, alors j'appelle « ajouter ». Je passe le premier argument, je passe la tranche et le nom de la tranche, et le deuxième argument est 100, le nombre que je veux mettre dans la tranche. Donc, il le met dedans, pour l'ajouter, il doit augmenter la longueur de la tranche. Donc, maintenant que la longueur de la tranche sera augmentée pour tenir compte du nouveau nombre qu'elle y a inscrit. Donc, c'est ainsi que vous utiliseriez « ajouter » en général.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/dev/golang/demarrer_avec_go/320_slice_variable.1716456670.txt.gz · Dernière modification : 2024/05/23 09:31 de yoann