Golang : Sort and reverse sort a slice of runes




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.

  See also : Golang : Sort and reverse sort a slice of bytes





By Adam Ng

IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.


Advertisement