Como obter uma slice de chaves de um map em Go: solução simples e eficiente
Olá a todos! Sou um desenvolvedor Go iniciante e me deparei com uma tarefa aparentemente simples, mas não consigo encontrar uma solução elegante.
Tenho um map, digamos, `map[string]int`, onde as chaves são nomes de usuários e os valores são suas idades. Preciso obter uma lista de todas as chaves (nomes) como uma slice `[]string`, para, por exemplo, passá-la para uma função que exibe a lista de usuários.
Em Python, eu simplesmente escreveria `list(my_dict.keys())`. Em JavaScript, `Object.keys(myObj)`. Em Go, até agora só vejo a opção de iteração manual:
```go
users := map[string]int{
"Alice": 25,
"Bob": 30,
"Charlie": 22,
}
var keys []string
for k := range users {
keys = append(keys, k)
}
```
Isso funciona, mas parece uma solução prolixa e caseira. Acho que para uma operação tão frequente, a biblioteca padrão do Go deveria ter uma função embutida. Procurei em `reflect` e `maps` (Go 1.21+), mas não encontrei uma resposta clara.
Perguntas:
1. A iteração manual é realmente a única