Mengisih tatasusunan struktur tersuai dalam GoLang

PHPz
Lepaskan: 2024-02-08 23:09:26
ke hadapan
643 orang telah melayarinya
<p><img src="https://img.php.cn/upload/article/000/000/164/170740497113136.jpg" alt="在 GoLang 中对自定义结构体数组进行排序"></p> <p>Dalam GoLang, mengisih tatasusunan struktur tersuai ialah keperluan biasa. Dengan membandingkan dan menukar elemen dalam tatasusunan, kami boleh mengisih tatasusunan struktur mengikut peraturan tertentu. Semasa proses pengisihan, kita boleh menggunakan algoritma pengisihan yang berbeza, seperti isihan gelembung, isihan sisipan atau isihan pantas, dsb. Tidak kira algoritma yang digunakan, kita boleh membandingkan berdasarkan bidang struktur tertentu untuk mencapai operasi pengisihan. Dalam artikel ini, kami akan memperkenalkan cara mengisih tatasusunan struktur tersuai dalam GoLang, serta beberapa petua dan pertimbangan pengisihan biasa. </p> <h2 class="daan">Kandungan soalan</h2> <p>Cara menggunakan golang untuk mengisih tatasusunan struktur tersuai. </p> <p>Kod saya ialah: </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">package main import "fmt" type ticketdistribution struct { label string ticketvolume int64 } type ticketdistributionresponse struct { leveldistribution []*ticketdistribution } func main() { var response ticketdistributionresponse response.leveldistribution = append(response.leveldistribution, &ticketdistribution{label: "john", ticketvolume: 3}) response.leveldistribution = append(response.leveldistribution, &ticketdistribution{label: "bill", ticketvolume: 7}) response.leveldistribution = append(response.leveldistribution, &ticketdistribution{label: "sam", ticketvolume: 4}) for _, val := range response.leveldistribution { fmt.println(*val) } }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>Ini mencetak output sebagai </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">{john 3} {bill 7} {sam 4}</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>Saya mahu mengisih objek <strong>respon</strong> mengikut nilai <strong>volume tiket</strong> dalam tertib menurun. </p> <p>Selepas mengisih, objek tindak balas sepatutnya kelihatan seperti ini: </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">{Bill 7} {Sam 4} {John 3}</pre><div class="contentsignin">Salin selepas log masuk</div></div></p><h2 class="daan">Penyelesaian</h2><p>Anda boleh menggunakan <a href="https://www.php.cn/link/ad0efad9dd0abaec4b8f9aaa489ec2f1" rel="nofollow noreferrer"><code>sort.slice</code></a> untuk mencapai ini. Ia memerlukan fungsi penghirisan dan pengisihan anda. Fungsi isihan itu sendiri mengambil dua indeks dan mengembalikan benar jika item di sebelah kiri <strong> kurang daripada item di </strong> di sebelah kanan. </p> <p>Jadi anda boleh mengisih mengikut kriteria tersuai anda sendiri. </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">package main import ( "fmt" "sort" ) type TicketDistribution struct { Label string TicketVolume int64 } type TicketDistributionResponse struct { LevelDistribution []*TicketDistribution } func main() { var response TicketDistributionResponse response.LevelDistribution = append(response.LevelDistribution, &TicketDistribution{Label: "John", TicketVolume: 3}) response.LevelDistribution = append(response.LevelDistribution, &TicketDistribution{Label: "Bill", TicketVolume: 7}) response.LevelDistribution = append(response.LevelDistribution, &TicketDistribution{Label: "Sam", TicketVolume: 4}) sort.Slice(response.LevelDistribution, func(i, j int) bool { a := response.LevelDistribution[i] b := response.LevelDistribution[j] return a.TicketVolume > b.TicketVolume }) for _, val := range response.LevelDistribution { fmt.Println(*val) } }</pre><div class="contentsignin">Salin selepas log masuk</div></div> <p>Gunakan <code>></code> 对切片进行降序排序,对于升序,您可以使用 <code><</code> dalam fungsi perbandingan. </p>

Atas ialah kandungan terperinci Mengisih tatasusunan struktur tersuai dalam GoLang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!