👣 Как сделать срез элементов с индексами и отсортировать?



▶️Итак, имеется вот такой слайс:

array := []int{10, 65, 21, 19, 43}   




Нужно сделать массив вида (value, index): [[10, 0], [65, 1], [21, 2], [19, 3], [43, 4]]

По сути, как в Python через enumerate: [(v, i) for v, i in enumerate(array)]. А потом, также как в Python отсортировать его: по value.



Как также сделать в Golang?





▶️Что ж, один из вариантов решения может выглядеть так:

package main



import (

"fmt"

"sort"

)



type Matrix [][]int



func main() {

data := []int{10, 65, 21, 19, 43}

var matrix [][]int

for index, value := range data {

matrix = append(matrix, []int{value, index})

}

sort.SliceStable(matrix, func(i, j int) bool {

return matrix[i][0] < matrix[j][0]

})



fmt.Println(matrix)

}




Результат: [[10 0] [19 3] [21 2] [43 4] [65 1]]



@Golang_google