在程式設計中,經常需要在記憶體中執行資料操作任務收藏。一種常見的操作是將資料分組並匯總每個類別內的值。在處理結構體切片時經常會遇到這個問題。
考慮以下結構體切片:
<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>
任務是將元素分組按前八個字段(id 字段)進行切片並對每組的Money字段求和。此操作類似於 SQL 查詢:
<code class="sql">SELECT SUM(money) FROM Registers GROUP BY id1, id2, id3, id4, id5, id6, id7, id8;</code>
Go 中有多種方法可以解決此問題。一種選擇是使用雜湊表來追蹤 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中文網其他相關文章!