Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyusun Sepotong Struktur dengan Cekap mengikut Ahli `time.Time` dalam Go?
Isih Susunan Struktur Mengikut Masa.Ahli Masa dalam Go
Dalam Go, mengisih struktur data oleh ahli tertentu boleh dilakukan menggunakan jenis pakej. Ini berguna dalam pelbagai senario, seperti apabila anda ingin menyusun elemen secara kronologi berdasarkan medan tarikh atau masa.
Untuk mengisih sepotong struct berdasarkan masa. Ahli masa, anda boleh menentukan jenis tersuai yang melaksanakan sort.Antara muka antara muka. Jenis ini mesti mentakrifkan kaedah berikut:
Dalam kod yang diberikan, anda telah menentukan jenis timeSlice yang melaksanakan kaedah ini. Walau bagaimanapun, kaedah Less membandingkan penunjuk dengan masa. Nilai masa dan bukannya nilai sebenar. Untuk membetulkannya, anda boleh menggunakan kaedah masa Sebelum. Masa untuk membandingkan nilai masa secara langsung:
func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) }
Setelah anda menentukan jenis tersuai, anda boleh mengisih hirisan menggunakan fungsi isih.Isih. Walau bagaimanapun, untuk Go versi 1.8 dan ke atas, anda boleh menggunakan sort.Slice function, yang lebih cekap dan ringkas:
sort.Slice(timeSlice, func(i, j int) bool { return timeSlice[i].date.Before(timeSlice[j].date) })
The sort.Slice function mengambil dua hujah: slice untuk diisih dan a penutupan yang mentakrifkan fungsi perbandingan. Dalam kes ini, penutupan mengembalikan benar jika elemen pada indeks i adalah kurang daripada elemen pada indeks j, dan palsu sebaliknya.
Selepas mengisih hirisan, elemen akan disusun dalam tertib menaik berdasarkan tarikh ahli.
Atas ialah kandungan terperinci Bagaimana untuk Menyusun Sepotong Struktur dengan Cekap mengikut Ahli `time.Time` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!