可以使用 map 来实现根据结构体字段值分组,然后将每组合并成一个三维数组。具体实现如下:

首先定义一个结构体类型,包含需要分组的字段:

type Data struct {
    Group string
    X     int
    Y     int
    Z     int
}

然后定义一个函数,输入参数为 Data 类型的切片,输出结果为三维数组:

func GroupBy(data []Data) [][][]int {
    // 创建一个 map,用于存储分组后的数据
    groups := make(map[string][][]int)

    // 遍历数据,将数据按照 Group 字段分组
    for _, d := range data {
        if _, ok := groups[d.Group]; !ok {
            groups[d.Group] = make([][]int, 0)
        }
        groups[d.Group] = append(groups[d.Group], []int{d.X, d.Y, d.Z})
    }

    // 将每个分组的数据合并成一个三维数组
    result := make([][][]int, 0)
    for _, g := range groups {
        result = append(result, g)
    }

    return result
}

使用示例:

data := []Data{
    {"A", 1, 2, 3},
    {"A", 4, 5, 6},
    {"B", 7, 8, 9},
    {"B", 10, 11, 12},
}

result := GroupBy(data)
fmt.Println(result) // 输出:[[[1 2 3] [4 5 6]] [[7 8 9] [10 11 12]]]

说明:上面的示例中,将输入的数据按照 Group 字段分成了两组,每组包含两个三维坐标点,最终输出的结果是一个三维数组。

go 结构体 根据几个值 分组合并成三维数组

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

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