Avatar ·

Pourquoi Go n'a-t-il pas de type de données intégré "Set" et comment l'implémenter ?

Bonjour à tous ! Je suis un développeur Go débutant, passé de Python, et j'ai rencontré un problème inattendu. En Python, j'utilisais constamment `set()` pour vérifier l'unicité des éléments, supprimer les doublons d'une liste et effectuer des vérifications rapides d'appartenance. Par exemple : ```python my_list = [1, 2, 2, 3, 3, 4] unique = set(my_list) # {1, 2, 3, 4} if 3 in unique: # vérification O(1) print("Trouvé !") ``` Quand j'ai commencé à coder en Go, je m'attendais à trouver quelque chose de similaire dans la bibliothèque standard, mais, à ma surprise, il n'y a ni type `Set`, ni generics (jusqu'à la version 1.18). J'ai dû écrire des bricolages : ```go // Tentative 1 : utiliser map seen := make(map[int]bool) items := []int{1, 2, 2, 3, 3, 4} for _, v := range items { seen[v] = true } // Mais c'est peu pratique - il faut vérifier ok, verbeux ``` Je comprends qu'on peut émuler un set via `map[T]struct{}`, mais cela ressemble à un hack. Pourquoi les développeurs de Go ont-ils décidé de ne pas ajouter un type `Set` séparé dans la bibliothèque standard ? Y a-t-il une