Avatar ·

¿Cuál es la forma más simple de ordenar un array de estructuras por un campo arbitrario en Go?

¡Hola a todos! Acabo de empezar a aprender Go y me encontré con un problema de ordenación. Tengo un array de estructuras User:

type User struct {
    Name string
    Age  int
    Score float64
}

users := []User{
    {"Anna", 25, 88.5},
    {"Boris", 30, 92.1},
    {"Viktor", 22, 85.0},
}

Necesito ordenar este array por diferentes campos según la elección del usuario: ya sea por nombre (alfabéticamente), por edad o por puntuación. Sé que en Go existe el paquete sort, pero para cada campo tengo que escribir una función separada con Less(i, j int) bool. Esto es muy incómodo, especialmente si hay muchos campos.

Por ejemplo, ordenar por edad:

sort.Slice(users, func(i, j int) bool {
    return users[i].Age < users[j].Age
})

¿Y si necesito ordenar por nombre? Tengo que escribir una nueva función anónima. ¿Y si hay 10 campos? ¿O si necesito ordenar primero por edad y luego por nombre?

En Pyt