Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengisih Go Struct mengikut Medan `time.Time`nya?

Bagaimana untuk Mengisih Go Struct mengikut Medan `time.Time`nya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 18:19:09266semak imbas

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

Isih Struct Mengikut Masa. Medan Masa dalam Go

Apabila cuba mengisih struct mengikut ahli jenis masa.Masa, pengguna mungkin menemui hasil yang tidak dijangka. Isu ini timbul kerana pakej isihan lalai tidak mempunyai fungsi untuk mengisih masa.Nilai masa.

Penerangan Masalah:

Struktur yang disediakan, reviews_data, mempunyai ahli yang dipanggil tarikh taip masa.Masa. Pengguna telah menentukan jenis hirisan tersuai, timeSlice, melaksanakan kaedah Len, Less dan Swap untuk mengisih hirisan. Mereka cuba memetakan peta ulasan_data ke timeSlice, mengisih kepingan dan mengharapkan peta diisih mengikut nilai tarikhnya. Walau bagaimanapun, pengisihan tidak berlaku seperti yang dijangkakan.

Penyelesaian:

Untuk Go versi 1.8 dan ke atas, isu ini boleh diselesaikan dengan menggunakan fungsi isihan.Slice sebaliknya macam.Isih. Sintaks baharu untuk mengisih kepingan mengikut medan tarikh ialah:

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

Fungsi isihan.Slice mengambil hirisan untuk diisih dan penutupan mentakrifkan fungsi perbandingan. Dalam kes ini, penutupan membandingkan nilai tarikh dua elemen dalam kepingan.

Penjelasan:

Sebelum Pergi 1.8, fungsi isihan.Isih hanya boleh digunakan dengan jenis yang melaksanakan antara muka Sorter. Dalam Go 1.8 dan ke atas, sort.Slice telah diperkenalkan, membenarkan pengguna mengisih kepingan menggunakan penutupan tanpa memerlukan pelaksanaan jenis Sorter tersuai.

Atas ialah kandungan terperinci Bagaimana untuk Mengisih Go Struct mengikut Medan `time.Time`nya?. 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