需要实现以下三个方法
如果我们不想通过创建类型来实现排序接口,可以在排序中使用匿名函数。sort.Slice()这个匿名函数与排序的 Less ()方法相同。这个匿名函数有2个 args (这是片的索引)并返回 bool。只需比较给定索引(i 和 j)中我们感兴趣的元素字段(age 或 name)并返回结果。
- func(i, j int) bool {
- return slice[i].fieldName < slice[j].fieldName
- }
或者
降序:
考虑一个高级的例子。假设有一个 Person 结构,它有 name 和 age 字段。需要根据名称对切片进行排序,有时还需要根据年龄对切片进行排序。为此,我创建了一个类型 PersonByAge 和 PersonByName,其底层数据类型为[] Person。
使用这两种类型来实现排序接口。可以通过根据需求(按年龄或名称)进行类型转换来对 Person 片进行排序。