Maison  >  Article  >  développement back-end  >  Parlons des Slices in Go : le duo dynamique de tableaux !

Parlons des Slices in Go : le duo dynamique de tableaux !

Linda Hamilton
Linda Hamiltonoriginal
2024-11-06 15:57:02751parcourir

Alors, vous plongez dans le Go et vous entendez parler de slices. "Qu'est-ce que c'est que des tranches ?" vous pourriez vous demander. Les tableaux ne suffisent-ils pas ? Eh bien, décomposons-le ! Les tranches sont une fonctionnalité phare de Go. Ils ressemblent à des tableaux, mais en bien plus cool : ils sont dynamiques et flexibles, capables de croître et de diminuer selon les besoins de votre programme. Mais il y a un ou deux pièges en cours de route. Déballons tout et familiarisons-nous avec les tranches !

Let

Slices : tableaux sous stéroïdes

À la base, les tranches sont des tableaux. Mais contrairement aux tableaux statiques, les tranches sont dynamiques ; ils peuvent changer de taille, ce qui est très pratique lorsque vos besoins en données sont imprévisibles. Imaginez que vous avez une liste d’éléments, et parfois il y en a 5, mais d’autres fois, cela peut être 50 ! Les tranches ne font pas grand-chose. Ils se redimensionnent simplement – ​​un peu comme par magie. ✨

Mais voici le problème : chaque fois qu'une tranche change de taille, un tout nouveau tableau est créé en dessous et les données sont copiées dans ce nouveau tableau. Pratique? Certainement! Mais il y a ici un certain coût de calcul. Chaque redimensionnement signifie que Go doit allouer une nouvelle mémoire et mélanger les choses.

Alors, comment apprivoiser cette bête ? Entrez la marque

Voici un conseil Go pratique pour vous : si vous savez que vous aurez besoin de beaucoup d'espace pour une tranche, utilisez la fonction make. Avec make([]T, len, cap), vous dites à Go : "Hé, donne-moi une tranche de ce type, avec cette longueur et cette capacité." Avoir une capacité initiale prête à l’emploi vous évite le coût d’un redimensionnement ultérieur. Intelligent, non ?

  • Par exemple :
numbers := make([]int, 0, 100)

Cette tranche commence avec une capacité de 100 mais ne contient encore aucun élément. Vous êtes prêt à le remplir sans que Go redimensionne constamment les choses. À long terme, vous économisez sur les performances.

Longueur vs capacité : le duo dynamique de tranches

Chaque tranche a une longueur (len) et une capacité (cap), et elles jouent différents rôles :

  • len(slice) : C'est le nombre d'éléments actuellement dans la tranche.
  • cap(slice) : Il s'agit de la longueur maximale que la tranche peut contenir avant de devoir être redimensionnée. Disons que vous avez une tranche x. Si vous essayez d'accéder à x[n] avec un n supérieur à la longueur (len(x)), vous obtiendrez une erreur hors plage. Mais pas de soucis ! Si vous ajoutez des éléments à une tranche et que vous atteignez sa capacité, Go vous alloue simplement un plus grand tableau sous le capot. Tout ce que vous avez à faire est de continuer à coder.

Besoin d'ajouter plus d'éléments ? Rencontrer ajouter

Lorsque vous souhaitez agrandir une tranche, ajouter est votre fonction incontournable. Il est conçu pour ajouter des éléments à la fin de votre tranche et redimensionne automatiquement la tranche si nécessaire. Dites adieu aux erreurs hors limites (enfin, surtout) !

  • Voici un exemple pratique :
numbers := make([]int, 0, 100)

Si la tranche a une capacité suffisante pour contenir les nouveaux éléments, elle l'utilisera. Sinon, append crée un nouveau tableau avec plus d'espace et déplace vos données. Aussi simple que ça ! Selon Effective Go, si la capacité est insuffisante, l'ajout « allouera une nouvelle baie sous-jacente ». Plutôt sympa, non ?

Conclusion

Slices in Go est votre ami – et puissant en plus. Ils vous permettent de travailler avec des collections de données de manière flexible, tout en masquant certains détails épineux de la gestion de la mémoire. Mais rappelez-vous : un grand pouvoir implique de grandes responsabilités. Chaque redimensionnement s'accompagne d'un peu de surcharge de calcul. En comprenant comment fonctionnent les tranches et comment make et append peuvent vous aider, vous êtes sur la bonne voie pour écrire du code Go efficace et élégant.

efficace-go

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