프로그래밍에서는 메모리 내에서 데이터 조작 작업을 수행해야 하는 경우가 종종 있습니다. 컬렉션. 일반적인 작업 중 하나는 데이터를 범주로 그룹화하고 각 범주 내의 값을 합산하는 것입니다. 이 문제는 구조체 조각으로 작업할 때 자주 발생합니다.
다음 구조체 조각을 고려하세요.
<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에서 이 문제에 접근하는 방법에는 여러 가지가 있습니다. 한 가지 옵션은 해시 테이블을 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!