Tri d'un tableau de structure par membre Time.Time dans Go
Dans Go, le tri d'une structure de données par membre spécifique peut être effectué en utilisant tri des colis. Ceci est utile dans divers scénarios, par exemple lorsque vous souhaitez trier les éléments par ordre chronologique en fonction d'un champ de date ou d'heure.
Pour trier une tranche de structures en fonction d'un membre time.Time, vous pouvez définir un type personnalisé qui implémente l'interface sort.Interface. Ce type doit définir les méthodes suivantes :
Dans le code donné, vous avez défini un type timeSlice qui implémente ces méthodes. Cependant, la méthode Less compare les pointeurs aux valeurs time.Time au lieu des valeurs réelles. Pour résoudre ce problème, vous pouvez utiliser la méthode Before de time.Time pour comparer directement les valeurs de temps :
func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) }
Une fois que vous avez défini le type personnalisé, vous pouvez trier la tranche à l'aide de la fonction sort.Sort. Cependant, pour les versions Go 1.8 et supérieures, vous pouvez utiliser la fonction sort.Slice, qui est plus efficace et concise :
sort.Slice(timeSlice, func(i, j int) bool { return timeSlice[i].date.Before(timeSlice[j].date) })
La fonction sort.Slice prend deux arguments : la tranche à trier et un fermeture qui définit la fonction de comparaison. Dans ce cas, la fermeture renvoie vrai si l'élément à l'index i est inférieur à l'élément à l'index j, et faux sinon.
Après avoir trié la tranche, les éléments seront classés par ordre croissant en fonction de la date membre.
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!