【发布时间】:2017-02-20 13:43:45
【问题描述】:
我来自 .NET 世界,在那里我拥有 LINQ,因此我可以像我们通常在 SQL 中看到的那样进行内存查询。
我有这个结构的一部分,我想按 8 个字段分组,然后对另一个整数字段求和。比如:
type Register struct {
id1 int
id2 int
id3 int
id4 int
id5 int
id6 int
id7 int
id8 int
money int
}
我想到了:
- 创建一个 Equal 函数来比较结构(这八个
字段)。 遍历我正在分析的集合。对于每个项目
检查它是否已经在哈希表中。如果有 => 我总结 场。如果不是 => 我将新项目添加到哈希表中。
有没有更好的方法或任何美观、高效且易于使用的方法 图书馆?
【问题讨论】:
-
我并没有真正理解你的问题。
Equal函数的目的是什么?我不确定您是否期待地图的地图,其中所有具有 id1 值X的项目都在一个组中,所有具有另一个 id1 值Y的项目都在不同的组等中。你能举一个输入和输出的例子吗?不需要大量数据,但足以说明您的结构不需要的点。 -
可以,例如:
-
是的,例如:
[r1{id1: 345, money: 1500}, r2{id1: 345, id2 140, money: 2700}, r3{id1: 345, money: 1000}。所以 r1 和 r3 应该相加得到rSummed1{id: 345, money: 2500}, rSummed2{id1: 345, id2: 140, money: 2700}。是经典的SELECT Sum(money) GROUP BY id1, id2 ... -
r2不会也在那个组吗?id1的值也是 345。 -
否,因为在 r2 中 id2 != 0。所有 id 字段必须完全相同。
标签: dictionary go struct grouping slice