プログラミングでは、多くの場合、インメモリでデータ操作タスクを実行する必要があります。コレクション。一般的な操作の 1 つは、データをカテゴリにグループ化し、各カテゴリ内の値を合計することです。この問題は、構造体のスライスを操作するときによく発生します。
次の構造体のスライスを考えてみましょう:
<code class="go">type Register struct { id1 int id2 int id3 int id4 int id5 int id6 int id7 int id8 int money int }</code>
タスクは、要素をグループ化することです。最初の 8 つのフィールド (id フィールド) でスライスし、各グループの Money フィールドを合計します。この操作は SQL クエリに似ています。
<code class="sql">SELECT SUM(money) FROM Registers GROUP BY id1, id2, id3, id4, id5, id6, id7, id8;</code>
Go では、この問題に対処する方法がいくつかあります。 1 つのオプションは、ハッシュ テーブルを使用して、ID フィールドの一意の組み合わせごとに合計を追跡することです。
次のコードは、このアプローチを示しています。
<code class="go">type Key struct { id1 int id2 int id3 int id4 int id5 int id6 int id7 int id8 int } func groupAndSum(registers []*Register) map[Key]int { m := map[Key]int{} for _, r := range registers { key := Key{ id1: r.id1, id2: r.id2, id3: r.id3, id4: r.id4, id5: r.id5, id6: r.id6, id7: r.id7, id8: r.id8, } m[key] += r.money } return m }</code>
このソリューションは、キーに基づいて構造体をグループ化し、合計する効率的な方法を提供します。
以上がGoで構造体のスライスをグループ化して合計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。