123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- // Copyright 2011 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 sort_test
- import (
- "fmt"
- "sort"
- )
- type Person struct {
- Name string
- Age int
- }
- func (p Person) String() string {
- return fmt.Sprintf("%s: %d", p.Name, p.Age)
- }
- // ByAge implements sort.Interface for []Person based on
- // the Age field.
- type ByAge []Person
- func (a ByAge) Len() int { return len(a) }
- func (a ByAge) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
- func (a ByAge) Less(i, j int) bool { return a[i].Age < a[j].Age }
- func Example() {
- people := []Person{
- {"Bob", 31},
- {"John", 42},
- {"Michael", 17},
- {"Jenny", 26},
- }
- fmt.Println(people)
- sort.Sort(ByAge(people))
- fmt.Println(people)
- // Output:
- // [Bob: 31 John: 42 Michael: 17 Jenny: 26]
- // [Michael: 17 Jenny: 26 Bob: 31 John: 42]
- }
|