如何在Go中最简单地按任意字段对结构体数组进行排序?
大家好!我刚开始学习Go,遇到了排序问题。我有一个User结构体数组:
type User struct {
Name string
Age int
Score float64
}
users := []User{
{"安娜", 25, 88.5},
{"鲍里斯", 30, 92.1},
{"维克多", 22, 85.0},
}
我需要根据用户的选择按不同字段对这个数组进行排序:有时按姓名(字母顺序),有时按年龄,有时按分数。我知道Go中有sort包,但每个字段都需要编写一个单独的带有Less(i, j int) bool的函数。这非常不方便,特别是当字段很多的时候。
例如,按年龄排序:
sort.Slice(users, func(i, j int) bool {
return users[i].Age < users[j].Age
})
如果需要按姓名排序呢?必须编写一个新的匿名函数。如果有10个字段呢?或者需要先按年龄排序,再按姓名排序?
在Python中