package main
import (
"fmt"
)
// 定义一个表示用户的结构体
type User struct {
Name string
Age int
}
// 创建一个用户切片
var users = []User{
{"Alice", 25},
{"Bob", 30},
{"Charlie", 22},
}
// 定义一个高阶函数,用于比较用户的年龄
func AgeSort(users []User) {
// 使用自定义排序函数对切片进行排序
byAge := func(i, j int) bool {
return users[i].Age < users[j].Age
}
// 使用sort包中的Sort函数进行排序
sort.Slice(users, byAge)
}
func main() {
// 使用AgeSort函数对users切片进行年龄排序
AgeSort(users)
// 遍历并打印排序后的切片
for _, user := range users {
fmt.Printf("Name: %s, Age: %d\n", user.Name, user.Age)
}
}
这段代码首先定义了一个User
结构体,并创建了一个包含几个用户的切片。然后定义了一个AgeSort
函数,该函数接受一个User
类型的切片,并使用Go标准库中的sort
包来按年龄排序用户。最后在main
函数中调用AgeSort
函数,并遍历打印排序后的结果。这个例子展示了结构体的使用、切片的创建和使用,以及高阶函数的应用。