golang对结构体切片进行排序
在Go语言中,可以使用sort包对结构体切片进行排序。下面是一个示例代码:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
type ByAge []Person
func (a ByAge) Len() int { return len(a) }
func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
func main() {
people := []Person{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 20},
}
fmt.Println(people)
sort.Sort(ByAge(people))
fmt.Println(people)
}
在上面的代码中,我们定义了一个Person结构体和一个ByAge类型,ByAge类型是Person结构体的切片类型,并且实现了sort.Interface接口的三个方法:Len()、Swap()和Less()。其中,Less()方法是用来比较两个元素大小的,我们在这里按照年龄从小到大排序。
在main()函数中,我们创建了一个people切片,并且打印出来,然后调用sort.Sort()函数对其进行排序,最后再打印出来,可以看到已经按照年龄从小到大排序了
原文地址: https://www.cveoy.top/t/topic/dsbk 著作权归作者所有。请勿转载和采集!