Lorsque vous travaillez avec des tranches dans Go, vous pouvez rencontrer des situations dans lesquelles vous devez filtrer les éléments en double. Cet article explore les différentes approches pour y parvenir dans Go.
Une technique courante mais inefficace consiste à parcourir la tranche et à rechercher les doublons à l'aide d'une boucle imbriquée. Bien que cette méthode fonctionne, elle a une complexité temporelle de O(n^2), ce qui peut être lent pour les grandes tranches.
Une approche plus efficace utilise les solutions construites par Go -dans le type de carte. Voici deux solutions :
Solution générique :
À l'aide de génériques (introduits dans Go 1.18), vous pouvez créer une fonction générique qui supprime les doublons pour tout type de données avec un type comparable.
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 }
Solution optimisée pour Chaînes :
Pour les tranches de chaînes, vous pouvez créer une fonction dédiée qui optimise la recherche de clé de mappage :
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 }
La solution générique prouve pour être plus flexible mais légèrement plus lent que la solution spécifique aux chaînes. L'analyse comparative sur de grandes tranches montre que la solution spécifique aux chaînes est nettement plus rapide.
Lors de la suppression des doublons des tranches dans Go, le choix de l'approche la plus efficace dépend du cas d'utilisation spécifique et du type de données. . Pour les types de données complexes ou les petites tranches, la solution générique convient. Pour les grandes tranches de chaînes, la solution spécifique aux chaînes offre 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!