go sort.slice多层排序
时间: 2024-09-24 13:16:14 浏览: 24
在Go语言中,`sort.Slice`函数是一个非常实用的工具,它用于对切片(slice)进行原地排序。这个函数允许你在多层条件下对数组进行排序,支持自定义比较器(comparator),这在处理复杂的数据结构时非常有用。
例如,如果你想先按照年龄排序,再按照姓名排序,你可以创建一个自定义的比较器,它首先比较年龄,如果年龄相同则比较姓名。示例代码如下:
```go
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
Score float64 // 添加额外排序依据
}
func byAgeAndName(persons []Person) func(i, j int) bool {
return func(i, j int) bool {
if persons[i].Age != persons[j].Age {
return persons[i].Age < persons[j].Age
}
return persons[i].Name < persons[j].Name
}
}
func main() {
persons := []Person{
{"Alice", 25, 80},
{"Bob", 30, 90},
{"Charlie", 25, 70},
}
sort.Slicepersons, byAgeAndName)
fmt.Println("Sorted People:")
for _, person := range persons {
fmt.Printf("%v, Age: %d, Score: %.1f\n", person.Name, person.Age, person.Score)
}
//