Maison >développement back-end >Golang >Comment gérer efficacement un tableau de chaînes uniques dans Go ?
Maintenir des chaînes uniques dans un tableau
Dans le code fourni, votre objectif est de créer un tableau de chaînes uniques. Cependant, les tableaux Go nécessitent des éléments uniques, ce qui rend difficile l'application de l'unicité avec des chaînes ajoutées dynamiquement. Cela pose la question de savoir comment créer une structure de données qui permet des valeurs de chaîne uniques.
Utiliser des cartes comme ensembles
Étant donné que Go ne dispose pas d'un type de données d'ensemble natif, un La carte peut être utilisée efficacement à cette fin. Le caractère unique des clés Maps constitue la base de notre collection de chaînes unique.
Option 1 : Carte avec des valeurs booléennes
Une carte non vide (vrai) peut représenter un ensemble de cordes uniques. Par exemple :
m := make(map[string]bool) m["aaa"] = true m["bbb"] = true m["bbb"] = true // Ignored as "bbb" already exists m["ccc"] = true
Cette approche fournit une représentation lisible et intuitive d'un ensemble.
Option 2 : Carte avec des valeurs de structure
Pour utilisation minimale de la mémoire, une carte avec un type de valeur struct{} peut être utilisée. Étant donné que les structures n'occupent aucune mémoire, cette option réduit considérablement la surcharge de mémoire.
m := make(map[string]struct{}) m["aaa"] = struct{}{} m["bbb"] = struct{}{} m["bbb"] = struct{}{} // Ignored as "bbb" already exists m["ccc"] = struct{}{}
Comment vérifier l'existence
Pour vérifier si un élément est présent dans l'ensemble, vous pouvez exploiter la valeur zéro de bool ou l'idiome virgule-ok avec l'approche struct :
Option 1 :
exists := m["somevalue"] // If "somevalue" is in the map, exists is true; otherwise, false
Option 2 :
_, exists := m["somevalue"] // exists is true if "somevalue" is in the map; false otherwise
Conservation de l'ordre
Si vous conservez l'ordre d'insertion est primordial, envisagez d'utiliser une combinaison d'une tranche pour préserver l'ordre et d'une carte pour la validation de l'unicité. Un exemple de fonction d'assistance :
func add(s string) { if m[s] { return // Already in the map } a = append(a, s) m[s] = true }
L'utilisation de cette approche vous permet de créer un ensemble ordonné de chaînes uniques.
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!