Maison > développement back-end > Golang > Comment trier correctement les structures contenant des champs « time.Time » dans Go ?

Comment trier correctement les structures contenant des champs « time.Time » dans Go ?

DDD
Libérer: 2024-12-02 00:34:10
original
561 Les gens l'ont consulté

How to Correctly Sort Structs Containing `time.Time` Fields in Go?

Tri des structures par Time.Time dans Go

Tri des structures en fonction des champs membres de type time.Time peut être une tâche courante dans Go programmation. Pour comprendre la solution, examinons le problème :

Problème :

Lors de la tentative de tri d'une structure avec un membre time.Time appelé date, à l'aide de fonctions de tri personnalisées , la liste résultante n'est pas triée.

Tri personnalisé Fonctions :

Vous avez fourni les fonctions de tri personnalisées suivantes :

type timeSlice []reviews_data

// Forward request for length
func (p timeSlice) Len() int {
    return len(p) 
}

// Define compare
func (p timeSlice) Less(i, j int) bool {
    return p[i].date.Before(p[j].date)
}

// Define swap over an array
func (p timeSlice) Swap(i, j int) {
    p[i], p[j] = p[j], p[i] 
}
Copier après la connexion

Ces fonctions définissent un type personnalisé timeSlice qui implémente l'interface sort.Interface, requise pour le tri dans Go.

Tri des cartes :

Vous aviez pour objectif de trier une carte de type map[string]reviews_data par le champ de date de ses valeurs. Voici votre code de tri :

//Sort the map by date
    date_sorted_reviews := make(timeSlice, 0, len(reviews_data_map))
    for _, d := range reviews_data_map {
        date_sorted_reviews = append(date_sorted_reviews, d)
    }       
    sort.Sort(date_sorted_reviews)
Copier après la connexion

Solution :

Le problème vient de l'appel incorrect à sort.Sort. Pour les versions Go 1.8 et supérieures, la méthode recommandée pour trier une tranche est d'utiliser sort.Slice :

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

Cette syntaxe définit explicitement la tranche à trier et la fonction de tri. L'utilisation de ce code mis à jour triera correctement vos structures par leur champ de date.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal