Maison >développement back-end >Golang >Tri du tableau de structure personnalisé dans GoLang

Tri du tableau de structure personnalisé dans GoLang

PHPz
PHPzavant
2024-02-08 23:09:26721parcourir
<p><img src="https://img.php.cn/upload/article/000/000/164/170740497113136.jpg" alt="在 GoLang 中对自定义结构体数组进行排序"></p> <p>Dans GoLang, le tri des tableaux de structure personnalisés est une exigence courante. En comparant et en échangeant des éléments du tableau, nous pouvons trier le tableau de structure selon des règles spécifiques. Pendant le processus de tri, nous pouvons utiliser différents algorithmes de tri, tels que le tri à bulles, le tri par insertion ou le tri rapide, etc. Quel que soit l'algorithme utilisé, nous pouvons comparer en fonction d'un certain champ de la structure pour réaliser l'opération de tri. Dans cet article, nous présenterons comment trier un tableau de structure personnalisé dans GoLang, ainsi que quelques conseils et considérations de tri courants. </p> <h2 class="daan">Contenu de la question</h2> <p>Comment utiliser Golang pour trier un tableau de structure personnalisé. </p> <p>Mon code est : </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>Cela imprime la sortie sous la forme </p> <pre class="brush:php;toolbar:false;">{john 3} {bill 7} {sam 4}</pre> <p>Je souhaite trier les objets <strong>response</strong> par valeur <strong>ticketvolume</strong> par ordre décroissant. </p> <p>Après le tri, l'objet de réponse devrait ressembler à ceci : </p> <pre class="brush:php;toolbar:false;">{Bill 7} {Sam 4} {John 3}</pre><h2 class="daan">Solution de contournement</h2> <p>Vous pouvez utiliser <a href="https://www.php.cn/link/ad0efad9dd0abaec4b8f9aaa489ec2f1" rel="nofollow noreferrer"><code>sort.slice</code></a> pour y parvenir. Cela nécessite vos fonctions de découpage et de tri. La fonction de tri elle-même prend deux indices et renvoie vrai si l'élément de gauche <strong> est inférieur à l'élément de </strong> de droite. </p> <p>Vous pouvez donc trier selon vos propres critères personnalisés. </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>Utilisez <code>></code> 对切片进行降序排序,对于升序,您可以使用 <code><</code> dans les fonctions de comparaison. </p>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer