可以先声明一个 map,将结构体列表的每个元素按照键分组。然后将 map 中的键按照顺序排列,最后可以使用 for 循环遍历排序后的 map。 下面是一个示例代码: ```go package main import ( "fmt" "sort" ) type User struct { ID int Name string Age int } func main() { users := []User{ {ID: 1, Name: "Alice", Age: 20}, {ID: 2, Name: "Bob", Age: 30}, {ID: 3, Name: "Eve", Age: 25}, {ID: 4, Name: "Mallory", Age: 35}, } // 将结构体列表按照年龄分组 ageGroups := make(map[int][]User) for _, user := range users { ageGroups[user.Age] = append(ageGroups[user.Age], user) } // 将 map 中的键按照升序排序 var ages []int for age := range ageGroups { ages = append(ages, age) } sort.Ints(ages) // 遍历排序后的 map for _, age := range ages { fmt.Println("Age group:", age) for _, user := range ageGroups[age] { fmt.Printf(" %s (ID: %d)\n", user.Name, user.ID) } } } ``` 输出结果为: ``` Age group: 20 Alice (ID: 1) Age group: 25 Eve (ID: 3) Age group: 30 Bob (ID: 2) Age group: 35 Mallory (ID: 4) ```