L'idiome des ensembles en Go
Fait partie de la section Logique & Flux du Journey GO de Coddy — leçon 31 sur 68.
Go ne possède pas de structure de données d'ensemble (set) intégrée comme beaucoup d'autres langages de programmation. Cependant, les développeurs Go ont créé une solution élégante en utilisant des maps pour simuler des ensembles, et ce modèle est devenu si courant qu'il est considéré comme du Go idiomatique.
L'idiome de l'ensemble (set) en Go utilise une map où vous ne vous souciez que des clés, pas des valeurs. Comme vous devez stocker quelque chose en tant que valeur, les programmeurs Go utilisent une structure vide struct{}. Voici le modèle de base :
var mySet map[string]struct{}La structure vide struct{} est spéciale car elle occupe zéro octet de mémoire. Cela la rend parfaite pour les ensembles (sets) où vous avez seulement besoin de savoir si quelque chose existe ou non, sans gaspiller de la mémoire pour des valeurs sans importance.
Cette approche exploite la propriété fondamentale des clés de map : elles doivent être uniques. Lorsque vous ajoutez un élément à votre set, vous ajoutez en réalité une clé à la map. L'unicité est automatiquement appliquée par le comportement de la map, vous offrant ainsi une véritable sémantique de set.
Dans les prochaines leçons, vous apprendrez à créer, manipuler et travailler avec des ensembles (sets) en utilisant ce motif idiomatique de Go. Cette technique est largement utilisée dans les bases de code Go pour suivre des éléments uniques, implémenter des algorithmes et résoudre des problèmes nécessitant des tests d'appartenance rapides.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Aide-mémoire
Go ne possède pas de structure de données d'ensemble (set) intégrée, mais utilise des maps pour simuler des ensembles avec le motif idiomatique :
var mySet map[string]struct{}La structure vide struct{} est utilisée comme type de valeur car elle occupe zéro octet de mémoire. Les clés de map doivent être uniques, ce qui fournit automatiquement la sémantique d'un ensemble pour le suivi d'éléments uniques.
Essayez vous-même
Cette leçon ne comprend pas de défi de code.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
Switch avec `fallthrough`Sortir de boucles imbriquéesContinuer une boucle spécifiqueL'instruction `goto`Récapitulatif - Contrôle de boucle avancé4Projet : Liste de tâches simple
Configuration du projetAjouter une tâche2Structures et Méthodes
Définir des méthodes sur des structuresReceveurs par valeurReceveurs par pointeurChoisir les receveursMéthodes vs FonctionsRécapitulatif - Comportement des structures5Les Maps en profondeur
Maps de StructsPointeurs comme valeurs de MapTester les Maps NilComparer des MapsRécapitulatif - Compteur de fréquence de mots3Interfaces (Les bases)
Qu'est-ce qu'une Interface ?Définir une InterfaceImplémenter une InterfaceUtiliser les types d'InterfaceInterface videAssertions de typeType SwitchRécapitulatif - Formes et comportements6Go idiomatique : Les ensembles
L'idiome des ensembles en GoCréer un ensembleAjouter à un ensembleVérifier l'appartenanceSupprimer d'un ensembleItérer sur un ensembleRécapitulatif - Noms d'utilisateur uniques