| // Copyright 2009 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package main |
| |
| import ( |
| "fmt" |
| "sort" |
| ) |
| |
| func main() { |
| seq := Sequence{6, 2, -1, 44, 16} |
| sort.Sort(seq) |
| fmt.Println(seq) |
| } |
| |
| type Sequence []int |
| |
| // Methods required by sort.Interface. |
| func (s Sequence) Len() int { |
| return len(s) |
| } |
| func (s Sequence) Less(i, j int) bool { |
| return s[i] < s[j] |
| } |
| func (s Sequence) Swap(i, j int) { |
| s[i], s[j] = s[j], s[i] |
| } |
| |
| // Method for printing - sorts the elements before printing. |
| func (s Sequence) String() string { |
| sort.Sort(s) |
| str := "[" |
| for i, elem := range s { |
| if i > 0 { |
| str += " " |
| } |
| str += fmt.Sprint(elem) |
| } |
| return str + "]" |
| } |