Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mengumpulkan dan menjumlahkan kepingan struct dalam Go menggunakan peta dan struct utama?
Mengumpul dan Menjumlahkan Kepingan Struktur dalam Go
Apabila menganalisis data, selalunya perlu untuk mengumpulkan elemen yang serupa dan mengira nilai agregat untuk setiap kumpulan. Dalam LINQ, ini boleh dicapai dengan cekap menggunakan pertanyaan dalam memori. Go menyediakan cara yang serba boleh untuk melaksanakan operasi serupa menggunakan peta dan penutupan.
Pertimbangkan sekeping struct Daftar, di mana setiap struct mengandungi berbilang pengecam unik (id1 hingga id8) dan nilai integer (wang). Matlamatnya adalah untuk mengumpulkan daftar ini mengikut pengecam unik mereka dan menjumlahkan nilai wang yang sepadan untuk setiap kumpulan.
Penghimpunan dan Penjumlahan Manual:
Satu pendekatan ialah mencipta fungsi Equal tersuai untuk membandingkan struct Daftar berdasarkan pengecamnya. Kemudian, ulangi keping, semak sama ada setiap daftar sudah ada dalam jadual cincang. Jika ya, nilai wang akan dinaikkan. Jika tidak, entri baharu ditambahkan pada jadual cincang yang mengandungi Daftar dan nilai wang permulaan 0.
Menggunakan Struktur dan Peta Utama:
Peta Go menyediakan cara yang lebih cekap untuk melaksanakan operasi pengumpulan dan penjumlahan. Dengan mentakrifkan struct Kunci berasingan yang mengandungi hanya pengecam unik (id1 hingga id8), anda boleh menggunakannya sebagai kunci unik untuk peta. Nilai dalam peta boleh menjadi jumlah nilai wang untuk daftar dengan gabungan pengecam yang sama.
Untuk melaksanakan pendekatan ini:
<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>
<code class="go">m := map[Key]int{}</code>
<code class="go">for _, v := range regs { m[v.key] += v.money }</code>
Output dan Pemformatan:
Untuk memaparkan keputusan dengan baik, anda boleh memformat Struktur kunci dengan semua medannya diawali dengan id. Contohnya:
<code class="go">fmt.Println("Nice output:") for k, v := range m { fmt.Printf("%+3v: %d\n", k, v) }</code>
Kesimpulan:
Menggunakan peta dengan struct utama ialah cara yang cekap dan fleksibel untuk mengumpulkan dan menjumlahkan kepingan struct dalam Go. Ia menyediakan alternatif berprestasi kepada pengumpulan dan penjumlahan manual, terutamanya apabila berurusan dengan set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan dan menjumlahkan kepingan struct dalam Go menggunakan peta dan struct utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!