Avatar ·

Por que Go não tem um tipo de dados embutido "conjunto" (Set) e como implementá-lo?

Olá a todos! Sou um desenvolvedor Go iniciante, vindo do Python, e me deparei com um problema inesperado. Em Python, eu usava constantemente `set()` para verificar a unicidade de elementos, remover duplicatas de listas e fazer verificações rápidas de pertinência. Por exemplo: ```python my_list = [1, 2, 2, 3, 3, 4] unique = set(my_list) # {1, 2, 3, 4} if 3 in unique: # verificação O(1) print("Encontrado!") ``` Quando comecei a programar em Go, esperava encontrar algo similar na biblioteca padrão, mas, para minha surpresa, não há nem um tipo `Set` nem generics (até a versão 1.18). Tive que escrever gambiarras: ```go // Tentativa 1: usar map seen := make(map[int]bool) items := []int{1, 2, 2, 3, 3, 4} for _, v := range items { seen[v] = true } // Mas isso é inconveniente - precisa verificar ok, é verboso ``` Eu entendo que é possível emular um conjunto com `map[T]struct{}`, mas isso parece um hack. Por que os desenvolvedores de Go decidiram não adicionar um tipo `Set` separado na biblioteca padrão? Existe alguma