diff options
Diffstat (limited to 'doc/progs/eff_sequence.go')
-rw-r--r-- | doc/progs/eff_sequence.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/doc/progs/eff_sequence.go b/doc/progs/eff_sequence.go new file mode 100644 index 000000000..11c885abf --- /dev/null +++ b/doc/progs/eff_sequence.go @@ -0,0 +1,42 @@ +// 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 + "]" +} |