Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyusun Sepotong Struktur dengan Cekap mengikut Ahli `time.Time` dalam Go?

Bagaimana untuk Menyusun Sepotong Struktur dengan Cekap mengikut Ahli `time.Time` dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-11-30 14:45:13637semak imbas

How to Efficiently Sort a Slice of Structs by a `time.Time` Member in 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:

  • Len() int: Mengembalikan panjang hirisan.
  • Less(i, j int) bool: Menentukan jika elemen pada indeks i adalah kurang daripada elemen pada indeks j.
  • Swap(i, j int): Menukar elemen pada indeks i dan j.

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!

Kenyataan:
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