Avatar ·

Por que Go não tem uma estrutura de dados "set" embutida e como implementá-la?

Olá a todos! Sou novo em Go, vim do Python, e fico muito confuso com a ausência de um tipo de dados "set" embutido. Em Python, eu usava constantemente set para verificação rápida de unicidade de elementos, remoção de duplicatas de slices e verificação de interseções. Por exemplo: ```go // Como faço isso em Go? uniqueNames := []string{} seen := set() // Isso não existe! for _, name := range names { if !seen.Contains(name) { seen.Add(name) uniqueNames = append(uniqueNames, name) } } ``` Eu entendo que posso usar map[string]bool ou map[string]struct{}, mas isso parece um hack. Por que os desenvolvedores de Go não adicionaram um set normal na biblioteca padrão? Afinal, é uma estrutura de dados básica que existe em praticamente todas as linguagens modernas. Talvez eu esteja perdendo algo? Existe uma maneira idiomática de trabalhar com sets em Go sem reinventar a roda? Ou preciso escrever minha própria implementação toda vez? Ficarei grato por exemplos de código e explicação da filosofia.