Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Isih Struktur dalam Go Menggunakan Berbilang Parameter?

Bagaimana untuk Isih Struktur dalam Go Menggunakan Berbilang Parameter?

Linda Hamilton
Lepaskan: 2024-12-11 10:03:17
asal
184 orang telah melayarinya

How to Sort Structs in Go Using Multiple Parameters?

Cara Isih Struktur dengan Berbilang Parameter

Dalam Go, apabila mengisih sekeping struct, selalunya berguna untuk mempertimbangkan berbilang parameter pengisihan. Sebagai contoh, kita mungkin mahu mengisih ahli dahulu dengan nama keluarga mereka dan kemudian dengan nama pertama mereka.

Salah satu cara untuk mencapai ini ialah dengan menggunakan fungsi slice.SortFunc yang diperkenalkan dalam Go 1.22. slices.SortFunc membolehkan kami menentukan fungsi perbandingan tersuai:

slices.SortFunc(members, func(a, b Member) int {
    return cmp.Or(
        cmp.Compare(a.LastName, b.LastName),
        cmp.Compare(a.FirstName, b.FirstName),
    )
})
Salin selepas log masuk

Di sini, kami menggunakan cmp.Atau untuk menggunakan kedua-dua nama keluarga dan perbandingan nama pertama. cmp.Compare mengembalikan integer yang menunjukkan kesamaan (0), lebih besar daripada (1), atau kurang daripada (-1).

Pilihan lain, tersedia sejak Go 1.8, ialah menggunakan isihan.Slice atau sort. Isih fungsi dengan fungsi kurang tersuai:

sort.Sort(byLastFirst(members))
Salin selepas log masuk

Di sini, kami mentakrifkan jenis tersuai byLastFirst yang melaksanakan Len, Swap, dan Kurang kaedah semacam itu.Antara muka antara muka. Kaedah Less menyemak kedua-dua nama keluarga dan nama pertama untuk perbandingan.

Pendekatan yang manakah untuk dipilih bergantung pada versi Go yang anda gunakan dan kemudahan yang ditawarkan untuk aplikasi khusus anda. Walau bagaimanapun, melainkan pengisihan terbukti menjadi kesesakan prestasi, pendekatan yang paling mudah biasanya lebih diutamakan.

Atas ialah kandungan terperinci Bagaimana untuk Isih Struktur dalam Go Menggunakan Berbilang Parameter?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan