# Golang : Sort and reverse sort a slice of runes

Tags :

Problem :

How to sort and reverse sort a slice of runes ?

Solution :

Sorting runes depends on the integer value of the rune and it will be ordered according to the integer values . Here's an example of how to sort slice of runes :

`````` package main

import (
"fmt"
"sort"
)

type RuneSlice []rune

func (p RuneSlice) Len() int { return len(p) }
func (p RuneSlice) Less(i, j int) bool { return p[i] < p[j] }
func (p RuneSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] }

var runes RuneSlice = []rune{'可', '愛'} // sort based on the integer values of the runes

func main() {
// Runes
fmt.Println("Original : ", runes[:])
fmt.Println("Original : ", string(runes[:]))

sort.Sort(RuneSlice(runes))

fmt.Println("Sort : ", runes[:])
fmt.Println("Sort : ", string(runes[:]))

sort.Sort(sort.Reverse(runes[:]))

fmt.Println("Reverse : ", runes[:])
fmt.Println("Reverse : ", string(runes[:]))

}
``````

Output :

Original : [21487 24859]

Original : 可愛

Sort : [21487 24859]

Sort : 可愛

Reverse : [24859 21487]

Reverse : 愛可

UPDATE : You can import "github.com/cznic/sortutil" and use the RuneSlice.Sort() method ( see http://godoc.org/github.com/cznic/sortutil#RuneSlice ) as well if you prefer.

Tags :