Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Isih Tatasusunan Go Struct dengan Cekap mengikut Medan Tersuai?
Isih Tatasusunan Elegan dalam Go dengan Pembanding Medan Tersuai
Mengisih tatasusunan struct mengikut medan tertentu boleh menjadi tugas biasa dalam pengaturcaraan Go . Mari kita terokai cara yang cekap dan boleh disesuaikan untuk mencapai matlamat ini.
Masalahnya:
Diberikan pelbagai struct seperti 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"` }
Bagaimanakah kita boleh mengisih tatasusunan ini mengikut medan Axis?
The Penyelesaian:
Sejak Go 1.8, fungsi sort.Slice menyediakan cara yang mudah untuk mengisih kepingan menggunakan fungsi perbandingan tersuai. Untuk mengisih tatasusunan planet mengikut Axis, kita boleh menggunakan kod berikut:
import "sort" // Define a comparison function to compare planets by their Axis value. var sortByAxis = func(i, j int) bool { return planets[i].Axis < planets[j].Axis } // Create a slice over the array and sort it using the custom comparison function. sort.Slice(planets[:], sortByAxis)
Menggunakan Tatasusunan lwn. Slices:
Biasanya, disyorkan untuk menggunakan kepingan atas tatasusunan dalam Go kerana kepingan lebih fleksibel dan cekap. Walau bagaimanapun, dalam kes ini, pembolehubah planet diisytiharkan sebagai tatasusunan. Untuk menjadikannya berfungsi dengan sort.Slice, kita perlu menindihnya dengan kepingan menggunakan planet[:].
Isih dan Mengekalkan Struktur Tatasusunan:
Ia penting untuk ambil perhatian bahawa operasi pengisihan mengubah suai tatasusunan di tempatnya. Jika anda ingin mengekalkan struktur tatasusunan asal, anda boleh membuat salinan hirisan sebelum mengisih:
planetSlice := make([]Planet, len(planets)) copy(planetSlice, planets) sort.Slice(planetSlice, sortByAxis)
Ini membolehkan anda menggunakan kepingan yang diisih tanpa menjejaskan tatasusunan asal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Tatasusunan Go Struct dengan Cekap mengikut Medan Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!