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
No answers yet.
Connectez-vous pour laisser une réponse
Blogs