Étant donné ce bloc de code
map[string]int {"hello":10, "foo":20, "bar":20}
Je voudrais imprimer
foo, 20
bar, 20
hello, 10
Dans l'ordre du plus haut au plus bas
Étant donné ce bloc de code
map[string]int {"hello":10, "foo":20, "bar":20}
Je voudrais imprimer
foo, 20
bar, 20
hello, 10
Dans l'ordre du plus haut au plus bas
Dans mon cas, il s'agissait d'un programme que j'avais créé. Dans ce programme, j'ai créé une Map comme vous, avec string
y int
. Puis j'ai découvert comme vous que Go n'a pas vraiment de moyen intégré pour trier quelque chose comme ça. J'ai lu les autres réponses et je n'ai pas vraiment aimé ce que j'ai lu.
J'ai donc essayé d'envisager le problème différemment. Go peut utiliser trier.Ints avec une tranche. Aussi, Go peut utiliser Trier.Trancher avec un comparateur personnalisé. Ainsi, au lieu de créer une carte de string
y int
J'ai créé un struct
de string
y int
. Ensuite, vous pouvez trier :
package main
import (
"fmt"
"sort"
)
type file struct {
name string
size int
}
func main() {
a := []file{
{"april.txt", 9}, {"may.txt", 7},
}
sort.Slice(a, func (d, e int) bool {
return a[d].size < a[e].size
})
fmt.Println(a)
}
Cela ne conviendra pas à tout le monde, car vous serez peut-être contraint de vous occuper d'une carte créée par quelqu'un d'autre. Mais cela m'a été utile. Le point positif est que, contrairement à toutes les autres réponses, celle-ci n'utilise pas de boucles.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.