Heim > Backend-Entwicklung > Golang > Sortieren eines benutzerdefinierten Strukturarrays in GoLang

Sortieren eines benutzerdefinierten Strukturarrays in GoLang

PHPz
Freigeben: 2024-02-08 23:09:26
nach vorne
721 Leute haben es durchsucht
<p><img src="https://img.php.cn/upload/article/000/000/164/170740497113136.jpg" alt="在 GoLang 中对自定义结构体数组进行排序"></p> <p>In GoLang ist das Sortieren benutzerdefinierter Strukturarrays eine häufige Anforderung. Durch den Vergleich und Austausch von Elementen im Array können wir das Strukturarray nach bestimmten Regeln sortieren. Während des Sortiervorgangs können wir verschiedene Sortieralgorithmen verwenden, z. B. Blasensortierung, Einfügungssortierung oder Schnellsortierung usw. Unabhängig davon, welcher Algorithmus verwendet wird, können wir den Sortiervorgang anhand eines bestimmten Felds der Struktur durchführen. In diesem Artikel stellen wir Ihnen vor, wie Sie ein benutzerdefiniertes Strukturarray in GoLang sortieren, sowie einige allgemeine Tipps und Überlegungen zum Sortieren. </p> <h2 class="daan">Frageninhalt</h2> <p>So verwenden Sie Golang zum Sortieren eines benutzerdefinierten Strukturarrays. </p> <p>Mein Code ist: </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">Nach dem Login kopieren</div></div> <p>Dies druckt die Ausgabe als </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">Nach dem Login kopieren</div></div> <p>Ich möchte die <strong>response</strong>-Objekte in absteigender Reihenfolge nach <strong>ticketvolume</strong>-Wert sortieren. </p> <p>Nach dem Sortieren sollte das Antwortobjekt so aussehen: </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">Nach dem Login kopieren</div></div></p><h2 class="daan">Workaround</h2><p>Sie können <a href="https://www.php.cn/link/ad0efad9dd0abaec4b8f9aaa489ec2f1" rel="nofollow noreferrer"><code>sort.slice</code></a> verwenden, um dies zu erreichen. Es erfordert Ihre Schneid- und Sortierfunktionen. Die Sortierfunktion selbst benötigt zwei Indizes und gibt true zurück, wenn das Element links <strong> kleiner ist als das Element </strong> rechts. </p> <p>So können Sie nach Ihren eigenen benutzerdefinierten Kriterien sortieren. </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">Nach dem Login kopieren</div></div> <p>Verwenden Sie <code>></code> 对切片进行降序排序,对于升序,您可以使用 <code><</code> in Vergleichsfunktionen. </p>

Das obige ist der detaillierte Inhalt vonSortieren eines benutzerdefinierten Strukturarrays in GoLang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage