Por qué Go no tiene un tipo de datos "Set" incorporado y cómo implementarlo
¡Hola a todos! Soy un desarrollador principiante de Go, vengo de Python y me encontré con un problema inesperado.
En Python usaba constantemente `set()` para verificar la unicidad de elementos, eliminar duplicados de una lista y realizar comprobaciones rápidas de pertenencia. Por ejemplo:
```python
my_list = [1, 2, 2, 3, 3, 4]
unique = set(my_list) # {1, 2, 3, 4}
if 3 in unique: # comprobación O(1)
print("¡Encontrado!")
```
Cuando empecé a escribir en Go, esperaba encontrar algo similar en la biblioteca estándar, pero, para mi sorpresa, no hay ni un tipo `Set` ni genéricos (hasta la versión 1.18). Tuve que escribir soluciones improvisadas:
```go
// Intento 1: usar map
seen := make(map[int]bool)
items := []int{1, 2, 2, 3, 3, 4}
for _, v := range items {
seen[v] = true
}
// Pero esto es incómodo - hay que comprobar ok, es verboso
```
Entiendo que se puede emular un conjunto con `map[T]struct{}`, pero parece un hack. ¿Por qué los desarrolladores de Go decidieron no agregar un tipo `Set` separado en la biblioteca estándar? ¿Hay alguna