golang按照结构体里的字段排序
在Go语言中,可以使用sort.Slice函数来按照结构体的字段进行排序。sort.Slice函数接受一个切片和一个排序函数作为参数,可以根据排序函数的逻辑对切片进行排序。
下面是一个示例代码,演示如何按照结构体的字段进行排序:
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{
{Name: "Alice", Age: 25},
{Name: "Bob", Age: 30},
{Name: "Charlie", Age: 20},
}
// 按照年龄升序排序
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println("按照年龄升序排序:")
for _, person := range people {
fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age)
}
// 按照姓名升序排序
sort.Slice(people, func(i, j int) bool {
return people[i].Name < people[j].Name
})
fmt.Println("按照姓名升序排序:")
for _, person := range people {
fmt.Printf("Name: %s, Age: %d\n", person.Name, person.Age)
}
}
输出结果如下:
按照年龄升序排序:
Name: Charlie, Age: 20
Name: Alice, Age: 25
Name: Bob, Age: 30
按照姓名升序排序:
Name: Alice, Age: 25
Name: Bob, Age: 30
Name: Charlie, Age: 20
在上面的代码中,我们定义了一个Person结构体,包含Name和Age两个字段。然后,我们创建了一个包含多个Person结构体的切片people。使用sort.Slice函数,我们可以传入一个排序函数来指定排序的逻辑。在示例中,我们先按照年龄升序排序,然后按照姓名升序排序。最后,我们遍历排序后的切片,输出排序结果。
原文地址: http://www.cveoy.top/t/topic/iExA 著作权归作者所有。请勿转载和采集!