Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengumpulkan dan menjumlahkan kepingan struktur dalam Go?
Dalam pengaturcaraan, selalunya perlu melaksanakan tugas manipulasi data pada dalam memori koleksi. Satu operasi biasa ialah mengumpulkan data ke dalam kategori dan menjumlahkan nilai dalam setiap kategori. Masalah ini sering dihadapi apabila bekerja dengan kepingan struct.
Pertimbangkan kepingan struct berikut:
<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>
Tugasnya adalah untuk mengumpulkan elemen dalam kepingan dengan lapan medan pertama (medan id) dan jumlahkan medan wang untuk setiap kumpulan. Operasi ini serupa dengan pertanyaan SQL:
<code class="sql">SELECT SUM(money) FROM Registers GROUP BY id1, id2, id3, id4, id5, id6, id7, id8;</code>
Terdapat beberapa cara untuk mendekati masalah ini dalam Go. Satu pilihan ialah menggunakan jadual cincang untuk menjejaki jumlah bagi setiap gabungan unik medan id.
Kod berikut menunjukkan pendekatan ini:
<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>
Penyelesaian ini menyediakan cara yang cekap untuk mengumpulkan dan menjumlahkan struktur berdasarkan kuncinya.
Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan dan menjumlahkan kepingan struktur dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!