Outils pour utilisateurs

Outils du site


cours:informatique:dev:golang:demarrer_avec_go:315_slice

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.

Les tranches (slice)

:TODO_DOCUPDATE:

Slice est donc un type de données que vous ne voyez pas dans de nombreuses autres langues. Slice est un type de données vraiment utile. Donc, la plupart du temps, des tranches sont utilisées à la place des tableaux, car elles sont flexibles, vous pouvez modifier leur taille, vous pouvez les augmenter en taille. Parlons donc des tranches et de la façon dont elles sont définies. En gros, une tranche est une fenêtre sur un tableau sous-jacent. Ainsi, pour chaque tranche, il y aura un tableau sous-jacent qui servira de base à la tranche. La tranche n'en est qu'une fenêtre, un morceau. Donc, vous avez un long éventail de 100 éléments, la tranche est peut-être juste de trois, quatre et cinq ou quelque chose comme ça, ou des éléments cinq, six, sept, huit et neuf, quelque chose comme ça. C'est essentiellement ce qu'est une tranche, une fenêtre sur un tableau éventuellement plus grand. Il n'est pas nécessaire qu'il soit plus grand, le tableau peut avoir la même taille que la tranche. Ensuite, la tranche examine simplement l'ensemble du tableau, mais le tableau peut être beaucoup plus grand que la tranche et la tranche peut être simplement une fenêtre plus petite sur celui-ci. C' est donc essentiellement ce qu'est une tranche. Les tranches peuvent donc avoir une taille variable, jusqu'à la taille du tableau. C'est une chose très intéressante avec les tranches, vous pouvez augmenter la taille de la tranche. Un tableau est un objet de taille fixe. Donc, disons que j'ai un tableau de taille 100 et que j'ai une tranche de taille 10, qui sur ce tableau correspond aux 10 premiers. Je peux augmenter la taille de la tranche à 20, et il suffit de regarder les 10 éléments suivants dans le tableau, puis je peux augmenter jusqu'à 30 et inclure les 10 éléments suivants dans le tableau. Ainsi, pour les tranches, vous pouvez augmenter la taille de la tranche, ce qui n'est pas le cas pour un tableau. C'est donc une bonne caractéristique des tranches. Désormais, chaque tranche possède essentiellement trois propriétés. L'un est le pointeur qui indique le début de la tranche. Ainsi, chaque tranche, puisqu'il s'agit d'une fenêtre sur un tableau, doit pointer vers un élément du tableau qui est le premier élément inclus dans la tranche. C'est le but. L'élément suivant d'une tranche, qui est la propriété d'une tranche, c'est sa longueur, c'est le nombre d'éléments qu'elle contient. Parce qu'ils ont tous une longueur. Le troisième est la capacité. La capacité est donc le nombre maximum d'éléments dans la tranche. Maintenant, cela est défini en regardant le pointeur qui est le début de la tranche et en regardant la différence entre celui-ci et la taille et la distance jusqu'à la fin de l'ensemble du tableau. Comme une tranche, sa taille peut être augmentée jusqu'à la taille de l'ensemble, jusqu'à la fin du tableau. Par exemple, disons que vous avez un tableau de taille 100, vous avez une tranche de taille 10. Vous pouvez augmenter la taille de cette tranche, disons que la tranche commence juste au début du tableau, vous pouvez augmenter la taille de la tranche jusqu'à 100, si vous le souhaitez. Il a donc une capacité de 100 personnes. Mais, supposons que vous ayez un tableau de taille 100 mais que cette tranche commence à l'index de tableau 10, alors elle ne peut être augmentée que jusqu'à la taille 90, car d'ici là, vous atteignez la fin du tableau. La capacité de cette tranche est donc faible. Alors, regardons un exemple pour voir ce que je veux dire par ces choses. Exemples de tranches. Nous commençons donc par le tableau sous-jacent. Nous avons ce tableau, nous le définissons avec ce littéral, il contient a, b, c, d, e, f et g. C'est le tableau, le tableau de chaînes. Maintenant, nous avons défini deux tranches à ce sujet, avec ce tableau comme tableau sous-jacent, s1 et s2. Maintenant, voici comment nous définissons ces tranches. Nous utilisons cette notation entre crochets, nous utilisons deux points à l'intérieur des crochets pour définir le début et la fin de la tranche. Donc, si vous regardez s1, s1 deux points est égal à un tableau, arr, trois points entre crochets. Le premier est le pointeur vers le premier élément du tableau, qui se trouve à l'intérieur de la tranche, et le trois est l'index juste après la fin de la tranche. Donc, cette tranche, s1, inclut les éléments du tableau un et deux, pas trois. Ainsi, le deuxième chiffre après les deux points est juste après la fin. Maintenant, si nous regardons s2. S2, deux points, cinq. Bien, donc S2 commence à deux. Il comprend trois et quatre, n'en inclut pas cinq. Donc, nous pouvons voir la photo en bas. Vous avez le tableau en bleu, le tableau entier. Il contient les lettres a, b, c, d, e, f, g. Ensuite, en rouge, j'ai surligné s1 et s2. Donc, s1 inclut les index un et deux car un deux-points trois, donc trois est juste après le N, et s2 inclut deux, trois et quatre, et remarquez que ces deux tranches se chevauchent, et c'est normal. Si vous regardez s1 et s2, ils incluent tous deux un tableau index deux, et c'est très bien. Les tranches peuvent se chevaucher et faire référence aux mêmes éléments à l'intérieur du tableau sous-jacent. C'est bon. Donc, la longueur et la capacité, il existe donc deux fonctions len et cap, qui renvoient la longueur et la capacité d'une tranche. Nous avons donc ici notre tableau a1, qui compte trois éléments : a, b, c. Ensuite, nous définissons une tranche, sli1, je l'appelle cette fois, et c'est le tableau zéro deux-points. OK. Cela signifie donc que cette tranche inclut l'index de tableau zéro mais pas l'index de tableau un. Donc, sa longueur est en fait une, elle devrait être une. Il ne contient qu'un seul élément, l'index du tableau zéro. Passons à la déclaration suivante : nous imprimons de même. Nous imprimons la longueur et la capacité. La longueur est de un. Zéro, zéro est la seule chose qui se trouve réellement dans la tranche, mais sa capacité est toujours de trois, car sa taille pourrait augmenter jusqu'à trois si elle augmentait la taille de la tranche jusqu'à la fin du tableau. Puisque le tableau contient trois éléments, et nous commençons la tranche au début à l'indice zéro du tableau, nous pourrions passer par les indices zéro, un et deux et la longueur de la tranche pourrait être jusqu'à trois. Sa capacité est donc de trois. Maintenant, accéder aux tranches ou vraiment faire référence aux tranches. Ainsi, lorsque vous écrivez dans une tranche, dans un élément d'une tranche, vous écrivez dans le tableau sous-jacent. Les tranches qui se chevauchent peuvent faire référence aux mêmes éléments du tableau. Ainsi, vous modifiez une tranche, vous pouvez modifier le tableau sous-jacent et vous pouvez modifier n'importe quelle tranche qui y accède également, elle inclut également cet élément du tableau. Donc, nous les avons ici dans cette image, nous les montrons dans ce tableau. Nous avons obtenu que s1 et s2 sont deux tranches différentes définies dessus. Voyez, en vert, un cercle où figure l'élément deux, avec la lettre de la chaîne c. Donc, celui-ci inclut en fait s1 et s2. Maintenant, dans s1 par rapport à s1, c'est celui entre parenthèses s1. Il fait référence à ce deuxième élément du tableau, car s1 zéro ferait référence au premier élément du tableau, car c'est là que commence s1. Donc, le crochet s1 1 fait référence à ce c, à cette lettre c. Maintenant , s2, ce deuxième élément du tableau, est le premier élément de s2. Donc, c'est la même chose que s2 bracket zero. Ces deux instructions d'impression imprimeront donc la même chose, la lettre C, car s1 entre crochets un est identique à s2 entre crochets zéro. Ils font tous deux référence aux mêmes éléments du tableau sous-jacent. Maintenant, nous avons parlé des littéraux de tableau, vous pouvez également avoir des littéraux de tranche. Ils peuvent être utilisés pour initialiser la tranche, tout comme un tableau littéral peut être utilisé pour initialiser un tableau. Maintenant, n'oubliez pas que chaque tranche doit avoir un tableau sous-jacent. Ainsi, lorsque vous initialisez une tranche, cela signifie que vous créez un tableau. Vous devez créer le tableau sous-jacent et la tranche couvre simplement l'ensemble du tableau. Ainsi, lorsque vous utilisez un littéral de tranche pour définir une tranche, cela crée en fait un tableau sous-jacent et une tranche pour référencer l'ensemble du tableau. Ainsi, la longueur et la capacité de la tranche sont les mêmes. Donc, si vous faites cela, si vous utilisez un littéral de tranche pour créer ce tableau, son pointeur pointera sur le début du tableau et sa longueur sera la longueur du tableau et sa capacité sera également la longueur du tableau. Ainsi, la tranche pointe vers l'ensemble du tableau lorsque vous utilisez un littéral de tranche pour définir de cette manière. Nous pouvons donc voir qu'ici, nous le définissons en utilisant un littéral de tranche. Le SLI est défini comme un littéral de tranche et définit le tableau sous-jacent. Vous savez que c'est une tranche littérale parce que vous pouvez voir où je dis que sli colon est égal à crochets. Normalement, entre crochets, vous mettez la longueur s'il s'agit d'un tableau, ou vous en mettez cinq ou trois dans ce cas, ou vous mettez le moins de points pour indiquer qu'il s'agit d'un tableau. La longueur doit être déduite du nombre d'éléments entre crochets. Mais dans ce cas, nous n'avons rien mis entre parenthèses. Donc, le compilateur dit : « Oh, cela doit être une tranche », et il crée le tableau sous-jacent, puis il fait pointer une tranche vers l'ensemble du tableau.

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

cours/informatique/dev/golang/demarrer_avec_go/315_slice.1716309098.txt.gz · Dernière modification : 2024/05/21 16:31 de yoann