github.com/spotify/syslog-redirector-golang@v0.0.0-20140320174030-4859f03d829a/src/pkg/unicode/utf8/example_test.go (about) 1 package utf8_test 2 3 import ( 4 "fmt" 5 "unicode/utf8" 6 ) 7 8 func ExampleDecodeLastRune() { 9 b := []byte("Hello, 世界") 10 11 for len(b) > 0 { 12 r, size := utf8.DecodeLastRune(b) 13 fmt.Printf("%c %v\n", r, size) 14 15 b = b[:len(b)-size] 16 } 17 // Output: 18 // 界 3 19 // 世 3 20 // 1 21 // , 1 22 // o 1 23 // l 1 24 // l 1 25 // e 1 26 // H 1 27 } 28 29 func ExampleDecodeLastRuneInString() { 30 str := "Hello, 世界" 31 32 for len(str) > 0 { 33 r, size := utf8.DecodeLastRuneInString(str) 34 fmt.Printf("%c %v\n", r, size) 35 36 str = str[:len(str)-size] 37 } 38 // Output: 39 // 界 3 40 // 世 3 41 // 1 42 // , 1 43 // o 1 44 // l 1 45 // l 1 46 // e 1 47 // H 1 48 49 } 50 51 func ExampleDecodeRune() { 52 b := []byte("Hello, 世界") 53 54 for len(b) > 0 { 55 r, size := utf8.DecodeRune(b) 56 fmt.Printf("%c %v\n", r, size) 57 58 b = b[size:] 59 } 60 // Output: 61 // H 1 62 // e 1 63 // l 1 64 // l 1 65 // o 1 66 // , 1 67 // 1 68 // 世 3 69 // 界 3 70 } 71 72 func ExampleDecodeRuneInString() { 73 str := "Hello, 世界" 74 75 for len(str) > 0 { 76 r, size := utf8.DecodeRuneInString(str) 77 fmt.Printf("%c %v\n", r, size) 78 79 str = str[size:] 80 } 81 // Output: 82 // H 1 83 // e 1 84 // l 1 85 // l 1 86 // o 1 87 // , 1 88 // 1 89 // 世 3 90 // 界 3 91 } 92 93 func ExampleEncodeRune() { 94 r := '世' 95 buf := make([]byte, 3) 96 97 n := utf8.EncodeRune(buf, r) 98 99 fmt.Println(buf) 100 fmt.Println(n) 101 // Output: 102 // [228 184 150] 103 // 3 104 } 105 106 func ExampleFullRune() { 107 buf := []byte{228, 184, 150} // 世 108 fmt.Println(utf8.FullRune(buf)) 109 fmt.Println(utf8.FullRune(buf[:2])) 110 // Output: 111 // true 112 // false 113 } 114 115 func ExampleFullRuneInString() { 116 str := "世" 117 fmt.Println(utf8.FullRuneInString(str)) 118 fmt.Println(utf8.FullRuneInString(str[:2])) 119 // Output: 120 // true 121 // false 122 } 123 124 func ExampleRuneCount() { 125 buf := []byte("Hello, 世界") 126 fmt.Println("bytes =", len(buf)) 127 fmt.Println("runes =", utf8.RuneCount(buf)) 128 // Output: 129 // bytes = 13 130 // runes = 9 131 } 132 133 func ExampleRuneCountInString() { 134 str := "Hello, 世界" 135 fmt.Println("bytes =", len(str)) 136 fmt.Println("runes =", utf8.RuneCountInString(str)) 137 // Output: 138 // bytes = 13 139 // runes = 9 140 } 141 142 func ExampleRuneLen() { 143 fmt.Println(utf8.RuneLen('a')) 144 fmt.Println(utf8.RuneLen('界')) 145 // Output: 146 // 1 147 // 3 148 } 149 150 func ExampleRuneStart() { 151 buf := []byte("a界") 152 fmt.Println(utf8.RuneStart(buf[0])) 153 fmt.Println(utf8.RuneStart(buf[1])) 154 fmt.Println(utf8.RuneStart(buf[2])) 155 // Output: 156 // true 157 // true 158 // false 159 } 160 161 func ExampleValid() { 162 valid := []byte("Hello, 世界") 163 invalid := []byte{0xff, 0xfe, 0xfd} 164 165 fmt.Println(utf8.Valid(valid)) 166 fmt.Println(utf8.Valid(invalid)) 167 // Output: 168 // true 169 // false 170 } 171 172 func ExampleValidRune() { 173 valid := 'a' 174 invalid := rune(0xfffffff) 175 176 fmt.Println(utf8.ValidRune(valid)) 177 fmt.Println(utf8.ValidRune(invalid)) 178 // Output: 179 // true 180 // false 181 } 182 183 func ExampleValidString() { 184 valid := "Hello, 世界" 185 invalid := string([]byte{0xff, 0xfe, 0xfd}) 186 187 fmt.Println(utf8.ValidString(valid)) 188 fmt.Println(utf8.ValidString(invalid)) 189 // Output: 190 // true 191 // false 192 }