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)
        }
    }
}

代码解释:

  1. 定义结构体:

    • 定义了一个名为 Person 的结构体,包含 NameAge 两个字段。
  2. 创建数组:

    • 创建了一个名为 peoplePerson 结构体数组,包含多个 Person 对象。
  3. 指定分组字段:

    • 定义了一个名为 keyname 的变量,表示根据哪个字段进行分组。在本例中,keyname 被设置为 'Name',表示根据姓名进行分组。
  4. 创建分组字典:

    • 创建了一个名为 groups 的字典,用于存储分组结果。字典的键为分组的字段值,值为属于该分组的 Person 对象数组。
  5. 遍历数组并分组:

    • 遍历 people 数组,根据 keyname 的值获取每个 Person 对象的对应字段值作为分组键。
    • 将每个 Person 对象添加到对应分组的数组中。
  6. 输出分组结果:

    • 遍历 groups 字典,输出每个分组的键和对应的 Person 对象。

总结:

该代码演示了如何使用 Golang 根据指定的字段名称将一个数组进行分组,并提供了清晰的代码解释,方便学习和理解。您可以根据自己的需要修改代码,实现不同的分组逻辑。

Golang 数组分组:根据字段名称将数组元素分组

原文地址: https://www.cveoy.top/t/topic/na1h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录