Golang 数组分组:根据字段名称将数组元素分组
Golang 数组分组:根据字段名称将数组元素分组
本教程演示如何使用 Golang 编写一个程序,根据指定的字段名称将一个数组进行分组。
代码示例:
package main
import "fmt"
type Person struct {
Name string
Age int
}
func main() {
people := []Person{
{Name: 'Alice', Age: 25},
{Name: 'Bob', Age: 30},
{Name: 'Charlie', Age: 35},
{Name: 'David', Age: 40},
{Name: 'Eva', Age: 45},
{Name: 'Frank', Age: 50},
{Name: 'Alice', Age: 55},
{Name: 'Bob', Age: 60},
{Name: 'Charlie', Age: 65},
}
keyname := 'Name'
groups := make(map[string][]Person)
for _, p := range people {
key := ""
switch keyname {
case 'Name':
key = p.Name
case 'Age':
key = fmt.Sprintf('%d', p.Age)
default:
panic(fmt.Sprintf('Unknown keyname: %s', keyname))
}
groups[key] = append(groups[key], p)
}
for key, group := range groups {
fmt.Printf('%s:
', key)
for _, p := range group {
fmt.Printf(' %s, %d
', p.Name, p.Age)
}
}
}
代码解释:
-
定义结构体:
- 定义了一个名为
Person的结构体,包含Name和Age两个字段。
- 定义了一个名为
-
创建数组:
- 创建了一个名为
people的Person结构体数组,包含多个Person对象。
- 创建了一个名为
-
指定分组字段:
- 定义了一个名为
keyname的变量,表示根据哪个字段进行分组。在本例中,keyname被设置为'Name',表示根据姓名进行分组。
- 定义了一个名为
-
创建分组字典:
- 创建了一个名为
groups的字典,用于存储分组结果。字典的键为分组的字段值,值为属于该分组的Person对象数组。
- 创建了一个名为
-
遍历数组并分组:
- 遍历
people数组,根据keyname的值获取每个Person对象的对应字段值作为分组键。 - 将每个
Person对象添加到对应分组的数组中。
- 遍历
-
输出分组结果:
- 遍历
groups字典,输出每个分组的键和对应的Person对象。
- 遍历
总结:
该代码演示了如何使用 Golang 根据指定的字段名称将一个数组进行分组,并提供了清晰的代码解释,方便学习和理解。您可以根据自己的需要修改代码,实现不同的分组逻辑。
原文地址: https://www.cveoy.top/t/topic/na1h 著作权归作者所有。请勿转载和采集!