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
Susan Sarandonoriginal
2024-12-18 10:25:10464parcourir

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
}

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
}

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
}

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)

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!

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