golang将二维数组根据某个字段进行分组操作

作者: adm 分类: go 发布时间: 2024-04-15

在Golang中,可以使用map来实现对二维数组的分组操作。以下是一个示例代码,它将一个二维数组根据每个元素的第二个字段进行分组:

package main
 
import (
    "fmt"
)
 
func groupByField(records [][]interface{}, fieldIndex int) map[interface{}][][]interface{} {
    groupedRecords := make(map[interface{}][][]interface{})
    for _, record := range records {
        fieldValue := record[fieldIndex]
        groupedRecords[fieldValue] = append(groupedRecords[fieldValue], record)
    }
    return groupedRecords
}
 
func main() {
    // 示例二维数组,每个元素都是一个interface{}切片
    records := [][]interface{}{
        {1, "groupA", 100},
        {2, "groupB", 200},
        {3, "groupA", 300},
        {4, "groupC", 400},
        {5, "groupB", 500},
    }
 
    // 根据第二个字段进行分组
    grouped := groupByField(records, 1)
 
    // 打印分组结果
    for key, group := range grouped {
        fmt.Printf("Group %v:\n", key)
        for _, record := range group {
            fmt.Println(record)
        }
    }
}

这段代码定义了一个groupByField函数,它接受一个二维数组和一个字段索引,然后根据指定字段索引进行分组。在main函数中,我们创建了一个示例数组并调用了groupByField函数,最后打印出了分组后的结果。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!