Programming-Idioms

History of Idiom 28 > diff from v32 to v33

Edit summary for version 33 :
[Go] this is not an idiomatic name, choosing s instead.

Version 32

Version 33

Idiom #28 Sort by a property

Sort elements of array-like collection items in ascending order of x.p, where p is a field of the type Item of the objects in items.

Idiom #28 Sort by a property

Sort elements of array-like collection items in ascending order of x.p, where p is a field of the type Item of the objects in items.

Imports
import "sort"
Imports
import "sort"
Code
type ItemPSorter []Item
func (this ItemPSorter) Len() int{ return len(this) }
func (this ItemPSorter) Less(i,j int) bool{ return this[i].p<this[j].p }
func (this ItemPSorter) Swap(i,j int) { this[i],this[j] = this[j],this[i] }

func sortItems(items []Item){
	sorter := ItemPSorter(items)
	sort.Sort( sorter )
}
Code
type ItemPSorter []Item
func (s ItemPSorter) Len() int{ return len(s) }
func (s ItemPSorter) Less(i,j int) bool{ return s[i].p<s[j].p }
func (s ItemPSorter) Swap(i,j int) { s[i],s[j] = s[j],s[i] }

func sortItems(items []Item){
	sorter := ItemPSorter(items)
	sort.Sort( sorter )
}
Comments bubble
The standard way is to declare a new type ItemSorter as a slice of Item, and carefully implement method Less.
Comments bubble
The standard way is to declare a new type ItemSorter as a slice of Item, and carefully implement method Less.
Demo URL
http://play.golang.org/p/WGjE22-hDV
Demo URL
https://play.golang.org/p/t7R2h5kzwJ