Maison > développement back-end > Golang > Comment supprimer efficacement les valeurs en double des Go Slices ?

Comment supprimer efficacement les valeurs en double des Go Slices ?

Susan Sarandon
Libérer: 2024-12-18 10:25:10
original
453 Les gens l'ont consulté

How to Efficiently Remove Duplicate Values from Go Slices?

Comment supprimer efficacement les valeurs en double des tranches dans Go

Les nouveaux arrivants sont souvent confrontés au défi de supprimer les valeurs en double des tranches. Bien que parcourir la tranche et vérifier manuellement les doublons puisse sembler une approche viable, elle est inefficace. Cet article présente des solutions optimales pour supprimer les doublons de manière générique et spécifiquement pour les chaînes et les entiers.

Solution générique

La fonction générique suivante utilise une carte pour garder une trace des éléments uniques et ajoutez-les en conséquence :

func removeDuplicate[T comparable](sliceList []T) []T {
    allKeys := make(map[T]bool)
    list := []T{}
    for _, item := range sliceList {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
Copier après la connexion

String-Specific Solution

Pour une efficacité améliorée, une solution spécifique à une chaîne peut être utilisée :

func removeDuplicateStr(strSlice []string) []string {
    allKeys := make(map[string]bool)
    list := []string{}
    for _, item := range strSlice {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
Copier après la connexion

Solution spécifique à un entier

De même, une solution spécifique aux entiers offre en outre optimisation :

func removeDuplicateInt(intSlice []int) []int {
    allKeys := make(map[int]bool)
    list := []int{}
    for _, item := range intSlice {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
Copier après la connexion

Utilisation

Ces fonctions peuvent être utilisées en passant la tranche contenant des valeurs en double et en recevant une nouvelle tranche avec uniquement les éléments uniques :

// Sample usage
cities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}
uniqueCities := removeDuplicate(cities)
Copier après la connexion

Conclusion

Les solutions présentées fournissent des méthodes optimales pour supprimer les valeurs en double des tranches dans Allez-y, permettant un code efficace et des performances optimales.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal