Isih Struktur mengikut Medan Tertentu dengan Kesederhanaan dalam Go
In Go, apabila bekerja dengan struct, menyusun tatasusunan struct mengikut medan tersuai dengan mudah nama sering diingini. Sebagai contoh, jika anda mempunyai tatasusunan planet, dengan setiap planet diwakili sebagai struct dengan medan seperti "Nama" dan "Axis", anda mungkin perlu menyusunnya berdasarkan nilai "Axis" mereka.
The penyelesaian tradisional melibatkan penggunaan pakej isihan dan memperkenalkan kod boilerplate yang penting untuk mengendalikan pengisihan mengikut kekunci tertentu. Walau bagaimanapun, dengan pengenalan Go 1.8, tugasan telah dipermudahkan dengan penambahan jenis.Slice function.
Menggunakan sort.Slice untuk Isih Cekap
sort.Slice membolehkan anda mengisih kepingan, yang merupakan struktur data yang lebih fleksibel daripada tatasusunan. Untuk mengisih tatasusunan struct, cuma tukarkannya kepada hirisan menggunakan sintaks [:]:
sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
Fungsi perbandingan ini menentukan pengisihan dalam tertib menaik berdasarkan medan "Axis".
Nota untuk Tatasusunan vs. Slices
Arrays dalam Go mempunyai saiz tetap dan tidak boleh dipanjangkan, tidak seperti hirisan. Dalam kebanyakan senario, kepingan lebih disukai kerana ia menawarkan keupayaan mengubah saiz yang dinamik. Jika anda mesti menggunakan tatasusunan, pastikan anda menukarnya kepada kepingan sebelum mengisih menggunakan isihan.Slice. Ini dicapai dengan menambah [:] selepas pembolehubah tatasusunan, seperti yang dilihat di bawah:
sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
Selepas operasi pengisihan, tatasusunan asal diubah suai, membolehkan anda terus menggunakan tatasusunan yang diisih jika perlu.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Struktur dengan Mudah mengikut Medan Tertentu dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!