Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Isih Susunan Struktur Go dengan Cekap mengikut Nama Medan Tersuai?

Bagaimanakah Saya Boleh Isih Susunan Struktur Go dengan Cekap mengikut Nama Medan Tersuai?

Linda Hamilton
Lepaskan: 2024-12-21 18:10:10
asal
240 orang telah melayarinya

How Can I Efficiently Sort a Go Array of Structs by a Custom Field Name?

Isih Tatasusunan yang Cekap mengikut Nama Medan Tersuai

Mengisih struktur data ialah tugas asas dalam pengaturcaraan, dan Go menawarkan pelbagai pendekatan untuk menangani perkara ini. Khususnya, tatasusunan struct menimbulkan cabaran apabila mengisih berdasarkan nama medan sewenang-wenangnya.

Pernyataan Masalah

Pertimbangkan kod Go berikut:

type Planet struct {
    Name       string  `json:"name"`
    Aphelion   float64 `json:"aphelion"`   // in million km
    Perihelion float64 `json:"perihelion"` // in million km
    Axis       int64   `json:"Axis"`       // in km
    Radius     float64 `json:"radius"`
}

func main() {
    planets := [...]Planet{{"Mars", 249.2, 206.7, 227939100, 3389.5},
                         {"Venus", 108.939, 107.477, 108208000, 6051.8},
                         {"Earth", 151.930, 147.095, 149598261, 6371.0}}
}
Salin selepas log masuk

Bagaimana kita boleh mengisih susunan planet oleh Paksi medan?

Penyelesaian

Dalam versi Go terkini, fungsi sort.Slice menyediakan cara yang cekap untuk mengisih kepingan berdasarkan fungsi perbandingan tersuai.

sort.Slice(planets[:], func(i, j int) bool {
  return planets[i].Axis < planets[j].Axis
})
Salin selepas log masuk

Di sini , i dan j ialah indeks unsur dalam hirisan, dan fungsi perbandingan kembali benar jika elemen pada indeks i harus didahulukan sebelum elemen pada indeks j. Dalam kes ini, kami sedang membandingkan medan Axis bagi planet-planet.

Perhatikan bahawa apabila menggunakan tatasusunan (berbanding dengan hirisan), pengendali tindanan hirisan [:] diperlukan untuk menukar tatasusunan kepada hirisan.

Kesimpulan

Dengan memanfaatkan isihan.Slice, kami mencapai pengisihan tatasusunan struct yang mudah dan cekap berdasarkan nama medan sewenang-wenangnya. Ini memberikan pengalaman seperti Python untuk mengisih struktur data yang kompleks dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Susunan Struktur Go dengan Cekap mengikut Nama Medan Tersuai?. 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