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), ) })
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))
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!