Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengisih Go Struct dengan betul mengikut masanya. Medan Masa?

Bagaimana untuk Mengisih Go Struct dengan betul mengikut masanya. Medan Masa?

Patricia Arquette
Lepaskan: 2025-01-02 13:42:38
asal
186 orang telah melayarinya

How to Correctly Sort a Go Struct by its time.Time Field?

Isih Struktur mengikut Masanya. Medan Masa

Anda sedang cuba mengisih struct dalam Pergi mengikut medan masanya.Masa, yang telah menghadapi masalah. Serpihan kod yang anda berikan termasuk pelaksanaan isihan tersuai menggunakan sekeping struct reviews_data anda dan peta:

type timeSlice []reviews_data

func (p timeSlice) Len() int { return len(p) }
func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) }
func (p timeSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
Salin selepas log masuk

Walau bagaimanapun, isu anda yang dilaporkan ialah hasil tidak diisih dengan betul. Ini boleh disebabkan oleh beberapa sebab:

  • Algoritma Salah: Semak semula fungsi Kurang anda untuk memastikan ia membandingkan medan tarikh dengan betul menggunakan kaedah Sebelum, yang menentukan sama ada kali pertama lebih awal daripada yang kedua.
  • Pelaksanaan Antara Muka: Jenis timeSlice mestilah sepenuhnya laksanakan isihan.Antara Muka dengan menyediakan semua kaedah yang diperlukan (Len, Less, Swap).
  • Akses Serentak: Jika anda mengakses peta reviews_data_map secara serentak semasa mengisih, ia boleh membawa kepada keputusan yang tidak konsisten. Gunakan teknik penyegerakan seperti kunci untuk menghalang senario ini.

Penyelesaian yang Diperbaiki (Go 1.8 dan ke atas):

Menggunakan fungsi isihan.Slice yang diperkenalkan dalam Go 1.8 , anda boleh memudahkan kod pengisihan anda:

sort.Slice(timeSlice, func(i, j int) bool {
    return timeSlice[i].date.Before(timeSlice[j].date)
})
Salin selepas log masuk

Ini dipertingkatkan penyelesaian menggunakan fungsi pengisihan perpustakaan standard, memastikan proses pengisihan yang lebih dipercayai dan cekap.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Go Struct dengan betul mengikut masanya. Medan Masa?. 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