Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengisih tatasusunan struktur tersuai dalam GoLang

Mengisih tatasusunan struktur tersuai dalam GoLang

PHPz
PHPzke hadapan
2024-02-08 23:09:26680semak imbas
<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> <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> <p>Ini mencetak output sebagai </p> <pre class="brush:php;toolbar:false;">{john 3} {bill 7} {sam 4}</pre> <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> <pre class="brush:php;toolbar:false;">{Bill 7} {Sam 4} {John 3}</pre><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> <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> <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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam