Tri de tableaux élégant dans Go
Lorsqu'il s'agit de tableaux de structures, le tri devient crucial. Dans Go, nous pouvons exploiter la fonction sort.Slice introduite dans Go 1.8 pour y parvenir sans effort.
Exemple :
Considérons un tableau de structures Planet :
type Planet struct { Name string Aphelion float64 Perihelion float64 Axis int64 Radius float64 }
Tri par axe :
Pour trier ce tableau par le champ Axis, on peut utiliser le code suivant :
sort.Slice(planets, func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
Cette fonction prend une tranche comme premier argument et une fonction de comparaison comme deuxième argument. La fonction de comparaison détermine comment les éléments doivent être triés. Dans ce cas, la fonction de comparaison renvoie vrai si la valeur de l'axe à l'index i est inférieure à la valeur de l'axe à l'index j, indiquant que l'élément en i doit être trié avant l'élément en j.
Attention aux tableaux :
Lorsque nous travaillons avec des tableaux, nous devons les convertir en tranches avant d'utiliser sort.Slice. En effet, les tableaux sont de taille fixe et ne peuvent pas être redimensionnés dynamiquement, contrairement aux tranches.
sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis })
En ajoutant la syntaxe [:] à la tranche, nous créons effectivement une tranche qui recouvre le tableau. Cela nous permet de modifier le tableau à travers la tranche.
Cette approche élégante et simple simplifie le tri des tableaux dans Go, le rendant aussi simple que son homologue Python, où sorted(planets, key=lambda n: n.Axis ) obtient le même résultat.
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!