Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gruppiert und summiert man ein Stück Strukturen in Go effizient?

Wie gruppiert und summiert man ein Stück Strukturen in Go effizient?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 07:25:02721Durchsuche

How to Efficiently Group and Sum a Slice of Structs in Go?

Gruppieren und Summieren eines Segments von Strukturen in Go

In diesem Szenario möchten Sie ein Segment von Strukturen basierend auf acht spezifischen Feldern gruppieren und summieren ein zusätzliches Ganzzahlfeld, ähnlich wie bei SQL-Abfragen. Um dies zu erreichen, haben Sie zunächst darüber nachgedacht, eine Equal-Funktion zum Vergleichen von Strukturen zu erstellen und iterativ zu prüfen, ob sich jedes Element in einer Hash-Tabelle befindet, und das Feld entsprechend hinzuzufügen oder zu summieren.

Während Ihr Ansatz gültig ist, gibt es dafür eine alternative Lösung bietet Effizienz und Einfachheit. Refaktorieren Sie Ihre Typen, sodass die Schlüsselfelder (id1-id8) eine separate Struktur, Key, bilden. Dadurch können Sie Key als Kartenschlüssel verwenden, da Strukturen in Go vergleichbar sind.

Hier ist die geänderte Typdefinition:

<code class="go">type Key struct {
    id1 int
    id2 int
    id3 int
    id4 int
    id5 int
    id6 int
    id7 int
    id8 int
}

type Register struct {
    key   Key
    money int
}</code>

Um die Summe zu gruppieren und zu berechnen, verwenden Sie eine Karte[ Schlüssel]int. Verwenden Sie Register.key als Kartenschlüssel, um alle Register mit denselben Schlüsseln (IDs) zu sammeln:

<code class="go">regs := []*Register{
    {Key{id1: 345}, 1500},
    {Key{id1: 345, id2: 140}, 2700},
    {Key{id1: 345, id2: 140}, 1300},
    {Key{id1: 345}, 1000},
    {Key{id3: 999}, 1000},
    {Key{id3: 999}, 2000},
}

// calculate sum:
m := map[Key]int{}
for _, v := range regs {
    m[v.key] += v.money
}</code>

Diese Lösung bietet eine einfache und effiziente Möglichkeit, die bereitgestellten Struktursegmente zu gruppieren und zu summieren. Es sind keine zusätzlichen Bibliotheken oder komplexen Iterationsmechanismen erforderlich.

Das obige ist der detaillierte Inhalt vonWie gruppiert und summiert man ein Stück Strukturen in Go effizient?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn