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.
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}} }
Bagaimana kita boleh mengisih susunan planet oleh Paksi medan?
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 })
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.
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!