go 结构体 根据几个值 分组合并成三维数组
可以使用 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 字段分成了两组,每组包含两个三维坐标点,最终输出的结果是一个三维数组。
原文地址: https://www.cveoy.top/t/topic/sNM 著作权归作者所有。请勿转载和采集!