Suppression de chaînes ou d'entiers en double d'une tranche dans Go
Problème :
Vous avez une tranche de villes d'étudiants qui peuvent contenir des entrées en double. Vous souhaitez créer une solution générique pour supprimer toutes les chaînes en double de n'importe quelle tranche.
Solution inefficace :
Votre solution actuelle consiste à vérifier l'existence de chaque élément de la tranche dans une autre boucle, ce qui est inefficace pour les grandes tranches.
Solution efficace : utiliser une carte
Un moyen efficace de supprimer les doublons est utiliser une carte pour stocker des éléments uniques. Au fur et à mesure que vous parcourez la tranche, vérifiez si l'élément actuel existe dans la carte. Sinon, ajoutez-le à la carte et au résultat filtré.
Solution générique :
Voici une fonction générique pour supprimer les doublons de n'importe quelle tranche, où T peut être n'importe quel 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 }
Solutions spécifiques pour les chaînes et les entiers :
Pour simplifier votre code, vous pouvez également créer des fonctions spécifiques pour les chaînes et les entiers :
func removeDuplicateStr(strSlice []string) []string { // [Remove duplicate code here] } func removeDuplicateInt(intSlice []int) []int { // [Remove duplicate code here] }
Exemple d'utilisation :
studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"} uniqueStudentsCities := removeDuplicate(studentsCities) fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]
En utilisant cette approche, vous pouvez supprimer efficacement les doublons de n'importe quelle tranche, quel que soit son type.
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!