fzlrhmn:
Tengo una rebanada de estructura como esta
type Interval struct{
number float64
coordinate string
}
var data []Interval
asume que los datos son como a continuación
[]Interval{
Interval{
number: 1,
coordinate: "x",
},
Interval{
number: 8,
coordinate: "y",
},
Interval{
number: 2,
coordinate: "x",
},
Interval{
number: 5,
coordinate: "y",
},
Interval{
number: 5,
coordinate: "x",
},
Interval{
number: 6,
coordinate: "y",
},
Interval{
number: 3,
coordinate: "x",
},
Interval{
number: 7,
coordinate: "y",
},
}
Mi pregunta es ¿cómo puedo solucionar esto por number
e coordinate
?
He tratado con un método para ordenar a continuación, pero no es como mi expectativa
// sort method that I use
sort.Slice(data, func(i, j int) bool {
return data[i].number < data[j].number
})
resultado:
[{1 x} {2 x} {3 x} {5 y} {5 x} {6 y} {7 y} {8 y}]
expectativa:
[{1 x} {2 x} {3 x} {5 x} {5 y} {6 y} {7 y} {8 y}]
diff: {5 y} {5 x}
debe ser{5 x} {5 y}
consejos: Mi expectativa es resultado similar con lo que Python con la función sort
apreciar realmente con cualquier ayuda
de HQT:
Su función de comparación no se puede comparar la propiedad coordinate
en la propiedad situación number
es igual. Por lo tanto la posición de {5, x} y {5, y} podría ser no determinista si el algoritmo de clasificación no es estable.
Esta es la versión actualizada de la función de comparación:
sort.Slice(data, func(i, j int) bool {
if data[i].number != data[j].number {
return data[i].number < data[j].number
}
return data[i].coordinate < data[j].coordinate
})