Aller au contenu principal
U/
Idiomes
go

Trier avec sort.Interface personnalisée

Définir le type Personnes []Personne et implémenter sort.Interface pour trier par âge croissant, puis par ordre alphabétique du nom en cas d'égalité d'âge.

45 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

Énoncé

Déclarer type Personne struct { Nom string; Age int } et type Personnes []Personne. Implémenter sort.Interface pour Personnes en définissant les trois méthodes requises : Len() int retourne len(p), Swap(i, j int) échange p[i] et p[j], et Less(i, j int) bool retourne true si p[i].Age < p[j].Age, ou si les âges sont égaux, si p[i].Nom < p[j].Nom. Appeler sort.Sort dans main sur une slice de cinq personnes et afficher chaque personne après le tri.

Contraintes

  • Compilé avec go build (Go 1.21+).
  • Implémenter sort.Interface manuellement : ne pas utiliser sort.Slice ni slices.SortFunc.
  • Les trois méthodes (Len, Swap, Less) doivent être définies sur le type Personnes.
  • Tri stable non requis : sort.Sort est suffisant.
  • Packages autorisés : fmt, sort.

Exemple

personnes := Personnes{
    {"Alice", 30},
    {"Bob", 25},
    {"Carol", 30},
    {"Dave", 20},
    {"Eve", 25},
}
sort.Sort(personnes)

Sortie après tri :

{Dave 20}
{Bob 25}
{Eve 25}
{Alice 30}
{Carol 30}

Les personnes de même âge (Bob/Eve à 25 ans, Alice/Carol à 30 ans) sont ordonnées alphabétiquement.

Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.