Heim > Artikel > Backend-Entwicklung > Wie gruppiert und summiert man Struktursegmente in Go?
Bei der Programmierung ist es oft notwendig, Datenmanipulationsaufgaben im Speicher durchzuführen Sammlungen. Eine häufige Operation besteht darin, Daten in Kategorien zu gruppieren und Werte innerhalb jeder Kategorie zu summieren. Dieses Problem tritt häufig auf, wenn mit Struktursegmenten gearbeitet wird.
Betrachten Sie das folgende Struktursegment:
<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>
Die Aufgabe besteht darin, die Elemente zu gruppieren den Slice durch die ersten acht Felder (die ID-Felder) und summiere die Geldfelder für jede Gruppe. Dieser Vorgang ist analog zur SQL-Abfrage:
<code class="sql">SELECT SUM(money) FROM Registers GROUP BY id1, id2, id3, id4, id5, id6, id7, id8;</code>
Es gibt mehrere Möglichkeiten, dieses Problem in Go anzugehen. Eine Möglichkeit besteht darin, eine Hash-Tabelle zu verwenden, um die Summen für jede eindeutige Kombination von ID-Feldern zu verfolgen.
Der folgende Code veranschaulicht diesen Ansatz:
<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>
Diese Lösung bietet eine effiziente Möglichkeit, Strukturen basierend auf ihren Schlüsseln zu gruppieren und zu summieren.
Das obige ist der detaillierte Inhalt vonWie gruppiert und summiert man Struktursegmente in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!