I am trying to reverse-sort a slice of integers in Go.
example := []int{1,25,3,5,4} sort.Ints(example) // this will give me a slice sorted from 1 to the highest number
How do I sort it so that it goes from highest to lowest? so [25 5 4 3 1]
I have tried this
sort.Sort(sort.Reverse(sort.Ints(keys)))
Source: http://golang.org/pkg/sort/#Reverse
However, I am getting the error below
# command-line-arguments ./Roman_Numerals.go:31: sort.Ints(keys) used as value
sort() method. This method requires two parameters i.e. the list to be sorted and the Collections. reverseOrder() that reverses the order of an element collection using a Comparator. The ClassCastException is thrown by the Collections.
Use the function sort. Slice . It sorts a slice using a provided function less(i, j int) bool . To sort the slice while keeping the original order of equal elements, use sort.
You simply pass an anonymous function to the sort. Slice function. This will sort in ascending order, if you want the opposite, simply write a[i] > a[j] in the anonymous function.
sort.Ints is a convenient function to sort a couple of ints. Generally you need to implement the sort.Interface interface if you want to sort something and sort.Reverse just returns a different implementation of that interface that redefines the Less
method.
Luckily the sort package contains a predefined type called IntSlice that implements sort.Interface:
keys := []int{3, 2, 8, 1} sort.Sort(sort.Reverse(sort.IntSlice(keys))) fmt.Println(keys)
package main import ( "fmt" "sort" ) func main() { example := []int{1, 25, 3, 5, 4} sort.Sort(sort.Reverse(sort.IntSlice(example))) fmt.Println(example) }
Playground
Output:
[25 5 4 3 1]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With