| // Copyright 2021 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 collate_test |
| |
| import ( |
| "fmt" |
| |
| "golang.org/x/text/collate" |
| "golang.org/x/text/language" |
| ) |
| |
| type book struct { |
| title string |
| } |
| |
| type bookcase struct { |
| books []book |
| } |
| |
| func (bc bookcase) Len() int { |
| return len(bc.books) |
| } |
| |
| func (bc bookcase) Swap(i, j int) { |
| temp := bc.books[i] |
| bc.books[i] = bc.books[j] |
| bc.books[j] = temp |
| } |
| |
| func (bc bookcase) Bytes(i int) []byte { |
| // returns the bytes of text at index i |
| return []byte(bc.books[i].title) |
| } |
| |
| func ExampleCollator_Sort() { |
| bc := bookcase{ |
| books: []book{ |
| {title: "If Cats Disappeared from the World"}, |
| {title: "The Guest Cat"}, |
| {title: "Catwings"}, |
| }, |
| } |
| |
| cc := collate.New(language.English) |
| cc.Sort(bc) |
| |
| for _, b := range bc.books { |
| fmt.Println(b.title) |
| } |
| // Output: |
| // Catwings |
| // If Cats Disappeared from the World |
| // The Guest Cat |
| } |