Maison > développement back-end > Golang > Comment trier correctement une structure Go par son champ time.Time ?

Comment trier correctement une structure Go par son champ time.Time ?

Patricia Arquette
Libérer: 2025-01-02 13:42:38
original
185 Les gens l'ont consulté

How to Correctly Sort a Go Struct by its time.Time Field?

Tri d'une structure par son champ time.Time

Vous essayez de trier une structure dans Go par son champ time.Time, qui a rencontré un problème. Le fragment de code que vous avez fourni inclut une implémentation de tri personnalisée utilisant une tranche de votre structure reviews_data et une carte :

type timeSlice []reviews_data

func (p timeSlice) Len() int { return len(p) }
func (p timeSlice) Less(i, j int) bool { return p[i].date.Before(p[j].date) }
func (p timeSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }
Copier après la connexion

Cependant, le problème que vous avez signalé est que le résultat n'est pas trié correctement. Cela peut être dû à plusieurs raisons :

  • Algorithme incorrect : Vérifiez à nouveau votre fonction Less pour vous assurer qu'elle compare correctement le champ de date à l'aide de la méthode Before, qui détermine si le la première fois est antérieure à la seconde.
  • Implémentation de l'interface : Le type timeSlice doit implémenter entièrement l'interface de tri en fournissant toutes les méthodes nécessaires (Len, Less, Swap).
  • Accès simultané : Si vous accédez à la carte reviews_data_map simultanément lors du tri, cela peut conduire à des résultats incohérents. Utilisez des techniques de synchronisation telles que des verrous pour éviter ce scénario.

Solution améliorée (Go 1.8 et versions ultérieures) :

Utilisation de la fonction sort.Slice introduite dans Go 1.8 , vous pouvez simplifier votre code de tri :

sort.Slice(timeSlice, func(i, j int) bool {
    return timeSlice[i].date.Before(timeSlice[j].date)
})
Copier après la connexion

Cette solution améliorée utilise la fonctionnalité de tri de la bibliothèque standard, garantissant un processus de tri plus fiable et efficace.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal