Golang 结构体嵌套定义
可以先声明一个 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)
```