Qual é a maneira mais simples de ordenar um slice de structs por um campo arbitrário em Go?
Olá a todos! Sou novo em Go e não consigo entender a ordenação de slices de structs. Suponha que eu tenha este código:
```go
type Person struct {
Name string
Age int
}
people := []Person{
{"Alice", 30},
{"Bob", 25},
{"Charlie", 35},
}
```
Quero ordenar este slice pelo campo `Name` (em ordem alfabética). Depois, possivelmente, pelo campo `Age` (em ordem crescente). Em outras linguagens (por exemplo, em Python), eu simplesmente passaria a chave de ordenação: `sorted(people, key=lambda p: p.name)`. Mas em Go, vejo que é preciso escrever um tipo separado, implementar a interface `sort.Interface` com três métodos — `Len()`, `Less()`, `Swap()`. Isso é muito verboso!
Existe uma maneira mais curta e elegante de fazer isso? Talvez alguma função embutida ou pacote que permita simplesmente especificar o nome do campo? Ou estou condenado a escrever 10 linhas de código para cada ordenação? Desde já, obrigado pela ajuda!
<<>>
Resposta curta: use sort.Slice e funções anônimas
No answers yet.
Faça login para deixar uma resposta
Blogs