| // 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 | |
| } |