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.