Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Isih Struktur dengan Mudah mengikut Medan Tertentu dalam Go?

Bagaimanakah Saya Boleh Isih Struktur dengan Mudah mengikut Medan Tertentu dalam Go?

Linda Hamilton
Lepaskan: 2024-12-23 00:05:10
asal
471 orang telah melayarinya

How Can I Easily Sort Structs by Specific Fields in Go?

Isih Struktur mengikut Medan Tertentu dengan Kesederhanaan dalam Go

In Go, apabila bekerja dengan struct, menyusun tatasusunan struct mengikut medan tersuai dengan mudah nama sering diingini. Sebagai contoh, jika anda mempunyai tatasusunan planet, dengan setiap planet diwakili sebagai struct dengan medan seperti "Nama" dan "Axis", anda mungkin perlu menyusunnya berdasarkan nilai "Axis" mereka.

The penyelesaian tradisional melibatkan penggunaan pakej isihan dan memperkenalkan kod boilerplate yang penting untuk mengendalikan pengisihan mengikut kekunci tertentu. Walau bagaimanapun, dengan pengenalan Go 1.8, tugasan telah dipermudahkan dengan penambahan jenis.Slice function.

Menggunakan sort.Slice untuk Isih Cekap

sort.Slice membolehkan anda mengisih kepingan, yang merupakan struktur data yang lebih fleksibel daripada tatasusunan. Untuk mengisih tatasusunan struct, cuma tukarkannya kepada hirisan menggunakan sintaks [:]:

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

Fungsi perbandingan ini menentukan pengisihan dalam tertib menaik berdasarkan medan "Axis".

Nota untuk Tatasusunan vs. Slices

Arrays dalam Go mempunyai saiz tetap dan tidak boleh dipanjangkan, tidak seperti hirisan. Dalam kebanyakan senario, kepingan lebih disukai kerana ia menawarkan keupayaan mengubah saiz yang dinamik. Jika anda mesti menggunakan tatasusunan, pastikan anda menukarnya kepada kepingan sebelum mengisih menggunakan isihan.Slice. Ini dicapai dengan menambah [:] selepas pembolehubah tatasusunan, seperti yang dilihat di bawah:

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

Selepas operasi pengisihan, tatasusunan asal diubah suai, membolehkan anda terus menggunakan tatasusunan yang diisih jika perlu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Struktur dengan Mudah mengikut Medan Tertentu dalam Go?. 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