1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
17 func ExampleBuffer() {
18 var b bytes
.Buffer
// A Buffer needs no initialization.
19 b
.Write([]byte("Hello "))
20 fmt
.Fprintf(&b
, "world!")
22 // Output: Hello world!
25 func ExampleBuffer_reader() {
26 // A Buffer can turn a string or a []byte into an io.Reader.
27 buf
:= bytes
.NewBufferString("R29waGVycyBydWxlIQ==")
28 dec
:= base64
.NewDecoder(base64
.StdEncoding
, buf
)
29 io
.Copy(os
.Stdout
, dec
)
30 // Output: Gophers rule!
33 func ExampleBuffer_Grow() {
37 b
.Write([]byte("64 bytes or fewer"))
38 fmt
.Printf("%q", bb
[:b
.Len()])
39 // Output: "64 bytes or fewer"
42 func ExampleCompare() {
43 // Interpret Compare's result by comparing it to zero.
45 if bytes
.Compare(a
, b
) < 0 {
48 if bytes
.Compare(a
, b
) <= 0 {
51 if bytes
.Compare(a
, b
) > 0 {
54 if bytes
.Compare(a
, b
) >= 0 {
55 // a greater or equal b
58 // Prefer Equal to Compare for equality comparisons.
59 if bytes
.Equal(a
, b
) {
62 if !bytes
.Equal(a
, b
) {
67 func ExampleCompare_search() {
68 // Binary search to find a matching byte slice.
70 var haystack
[][]byte // Assume sorted
71 i
:= sort
.Search(len(haystack
), func(i
int) bool {
72 // Return haystack[i] >= needle.
73 return bytes
.Compare(haystack
[i
], needle
) >= 0
75 if i
< len(haystack
) && bytes
.Equal(haystack
[i
], needle
) {
80 func ExampleTrimSuffix() {
81 var b
= []byte("Hello, goodbye, etc!")
82 b
= bytes
.TrimSuffix(b
, []byte("goodbye, etc!"))
83 b
= bytes
.TrimSuffix(b
, []byte("gopher"))
84 b
= append(b
, bytes
.TrimSuffix([]byte("world!"), []byte("x!"))...)
86 // Output: Hello, world!
89 func ExampleTrimPrefix() {
90 var b
= []byte("Goodbye,, world!")
91 b
= bytes
.TrimPrefix(b
, []byte("Goodbye,"))
92 b
= bytes
.TrimPrefix(b
, []byte("See ya,"))
93 fmt
.Printf("Hello%s", b
)
94 // Output: Hello, world!
97 func ExampleFields() {
98 fmt
.Printf("Fields are: %q", bytes
.Fields([]byte(" foo bar baz ")))
99 // Output: Fields are: ["foo" "bar" "baz"]
102 func ExampleFieldsFunc() {
103 f
:= func(c rune
) bool {
104 return !unicode
.IsLetter(c
) && !unicode
.IsNumber(c
)
106 fmt
.Printf("Fields are: %q", bytes
.FieldsFunc([]byte(" foo1;bar2,baz3..."), f
))
107 // Output: Fields are: ["foo1" "bar2" "baz3"]
110 func ExampleContains() {
111 fmt
.Println(bytes
.Contains([]byte("seafood"), []byte("foo")))
112 fmt
.Println(bytes
.Contains([]byte("seafood"), []byte("bar")))
113 fmt
.Println(bytes
.Contains([]byte("seafood"), []byte("")))
114 fmt
.Println(bytes
.Contains([]byte(""), []byte("")))
122 func ExampleContainsAny() {
123 fmt
.Println(bytes
.ContainsAny([]byte("I like seafood."), "fÄo!"))
124 fmt
.Println(bytes
.ContainsAny([]byte("I like seafood."), "去是伟大的."))
125 fmt
.Println(bytes
.ContainsAny([]byte("I like seafood."), ""))
126 fmt
.Println(bytes
.ContainsAny([]byte(""), ""))
134 func ExampleContainsRune() {
135 fmt
.Println(bytes
.ContainsRune([]byte("I like seafood."), 'f'))
136 fmt
.Println(bytes
.ContainsRune([]byte("I like seafood."), 'ö'))
137 fmt
.Println(bytes
.ContainsRune([]byte("去是伟大的!"), '大'))
138 fmt
.Println(bytes
.ContainsRune([]byte("去是伟大的!"), '!'))
139 fmt
.Println(bytes
.ContainsRune([]byte(""), '@'))
148 func ExampleCount() {
149 fmt
.Println(bytes
.Count([]byte("cheese"), []byte("e")))
150 fmt
.Println(bytes
.Count([]byte("five"), []byte(""))) // before & after each rune
156 func ExampleEqual() {
157 fmt
.Println(bytes
.Equal([]byte("Go"), []byte("Go")))
158 fmt
.Println(bytes
.Equal([]byte("Go"), []byte("C++")))
164 func ExampleEqualFold() {
165 fmt
.Println(bytes
.EqualFold([]byte("Go"), []byte("go")))
169 func ExampleHasPrefix() {
170 fmt
.Println(bytes
.HasPrefix([]byte("Gopher"), []byte("Go")))
171 fmt
.Println(bytes
.HasPrefix([]byte("Gopher"), []byte("C")))
172 fmt
.Println(bytes
.HasPrefix([]byte("Gopher"), []byte("")))
179 func ExampleHasSuffix() {
180 fmt
.Println(bytes
.HasSuffix([]byte("Amigo"), []byte("go")))
181 fmt
.Println(bytes
.HasSuffix([]byte("Amigo"), []byte("O")))
182 fmt
.Println(bytes
.HasSuffix([]byte("Amigo"), []byte("Ami")))
183 fmt
.Println(bytes
.HasSuffix([]byte("Amigo"), []byte("")))
191 func ExampleIndex() {
192 fmt
.Println(bytes
.Index([]byte("chicken"), []byte("ken")))
193 fmt
.Println(bytes
.Index([]byte("chicken"), []byte("dmr")))
199 func ExampleIndexByte() {
200 fmt
.Println(bytes
.IndexByte([]byte("chicken"), byte('k')))
201 fmt
.Println(bytes
.IndexByte([]byte("chicken"), byte('g')))
207 func ExampleIndexFunc() {
208 f
:= func(c rune
) bool {
209 return unicode
.Is(unicode
.Han
, c
)
211 fmt
.Println(bytes
.IndexFunc([]byte("Hello, 世界"), f
))
212 fmt
.Println(bytes
.IndexFunc([]byte("Hello, world"), f
))
218 func ExampleIndexAny() {
219 fmt
.Println(bytes
.IndexAny([]byte("chicken"), "aeiouy"))
220 fmt
.Println(bytes
.IndexAny([]byte("crwth"), "aeiouy"))
226 func ExampleIndexRune() {
227 fmt
.Println(bytes
.IndexRune([]byte("chicken"), 'k'))
228 fmt
.Println(bytes
.IndexRune([]byte("chicken"), 'd'))
234 func ExampleLastIndex() {
235 fmt
.Println(bytes
.Index([]byte("go gopher"), []byte("go")))
236 fmt
.Println(bytes
.LastIndex([]byte("go gopher"), []byte("go")))
237 fmt
.Println(bytes
.LastIndex([]byte("go gopher"), []byte("rodent")))
244 func ExampleLastIndexAny() {
245 fmt
.Println(bytes
.LastIndexAny([]byte("go gopher"), "MüQp"))
246 fmt
.Println(bytes
.LastIndexAny([]byte("go 地鼠"), "地大"))
247 fmt
.Println(bytes
.LastIndexAny([]byte("go gopher"), "z,!."))
254 func ExampleLastIndexByte() {
255 fmt
.Println(bytes
.LastIndexByte([]byte("go gopher"), byte('g')))
256 fmt
.Println(bytes
.LastIndexByte([]byte("go gopher"), byte('r')))
257 fmt
.Println(bytes
.LastIndexByte([]byte("go gopher"), byte('z')))
264 func ExampleLastIndexFunc() {
265 fmt
.Println(bytes
.LastIndexFunc([]byte("go gopher!"), unicode
.IsLetter
))
266 fmt
.Println(bytes
.LastIndexFunc([]byte("go gopher!"), unicode
.IsPunct
))
267 fmt
.Println(bytes
.LastIndexFunc([]byte("go gopher!"), unicode
.IsNumber
))
275 s
:= [][]byte{[]byte("foo"), []byte("bar"), []byte("baz")}
276 fmt
.Printf("%s", bytes
.Join(s
, []byte(", ")))
277 // Output: foo, bar, baz
280 func ExampleRepeat() {
281 fmt
.Printf("ba%s", bytes
.Repeat([]byte("na"), 2))
285 func ExampleReplace() {
286 fmt
.Printf("%s\n", bytes
.Replace([]byte("oink oink oink"), []byte("k"), []byte("ky"), 2))
287 fmt
.Printf("%s\n", bytes
.Replace([]byte("oink oink oink"), []byte("oink"), []byte("moo"), -1))
293 func ExampleRunes() {
294 rs
:= bytes
.Runes([]byte("go gopher"))
295 for _
, r
:= range rs
{
296 fmt
.Printf("%#U\n", r
)
310 func ExampleSplit() {
311 fmt
.Printf("%q\n", bytes
.Split([]byte("a,b,c"), []byte(",")))
312 fmt
.Printf("%q\n", bytes
.Split([]byte("a man a plan a canal panama"), []byte("a ")))
313 fmt
.Printf("%q\n", bytes
.Split([]byte(" xyz "), []byte("")))
314 fmt
.Printf("%q\n", bytes
.Split([]byte(""), []byte("Bernardo O'Higgins")))
317 // ["" "man " "plan " "canal panama"]
318 // [" " "x" "y" "z" " "]
322 func ExampleSplitN() {
323 fmt
.Printf("%q\n", bytes
.SplitN([]byte("a,b,c"), []byte(","), 2))
324 z
:= bytes
.SplitN([]byte("a,b,c"), []byte(","), 0)
325 fmt
.Printf("%q (nil = %v)\n", z
, z
== nil)
331 func ExampleSplitAfter() {
332 fmt
.Printf("%q\n", bytes
.SplitAfter([]byte("a,b,c"), []byte(",")))
333 // Output: ["a," "b," "c"]
336 func ExampleSplitAfterN() {
337 fmt
.Printf("%q\n", bytes
.SplitAfterN([]byte("a,b,c"), []byte(","), 2))
338 // Output: ["a," "b,c"]
341 func ExampleTitle() {
342 fmt
.Printf("%s", bytes
.Title([]byte("her royal highness")))
343 // Output: Her Royal Highness
346 func ExampleToTitle() {
347 fmt
.Printf("%s\n", bytes
.ToTitle([]byte("loud noises")))
348 fmt
.Printf("%s\n", bytes
.ToTitle([]byte("хлеб")))
355 fmt
.Printf("[%q]", bytes
.Trim([]byte(" !!! Achtung! Achtung! !!! "), "! "))
356 // Output: ["Achtung! Achtung"]
359 func ExampleTrimFunc() {
360 fmt
.Println(string(bytes
.TrimFunc([]byte("go-gopher!"), unicode
.IsLetter
)))
361 fmt
.Println(string(bytes
.TrimFunc([]byte("\"go-gopher!\""), unicode
.IsLetter
)))
362 fmt
.Println(string(bytes
.TrimFunc([]byte("go-gopher!"), unicode
.IsPunct
)))
363 fmt
.Println(string(bytes
.TrimFunc([]byte("1234go-gopher!567"), unicode
.IsNumber
)))
372 rot13
:= func(r rune
) rune
{
374 case r
>= 'A' && r
<= 'Z':
375 return 'A' + (r
-'A'+13)%26
376 case r
>= 'a' && r
<= 'z':
377 return 'a' + (r
-'a'+13)%26
381 fmt
.Printf("%s", bytes
.Map(rot13
, []byte("'Twas brillig and the slithy gopher...")))
382 // Output: 'Gjnf oevyyvt naq gur fyvgul tbcure...
385 func ExampleTrimLeft() {
386 fmt
.Print(string(bytes
.TrimLeft([]byte("453gopher8257"), "0123456789")))
391 func ExampleTrimLeftFunc() {
392 fmt
.Println(string(bytes
.TrimLeftFunc([]byte("go-gopher"), unicode
.IsLetter
)))
393 fmt
.Println(string(bytes
.TrimLeftFunc([]byte("go-gopher!"), unicode
.IsPunct
)))
394 fmt
.Println(string(bytes
.TrimLeftFunc([]byte("1234go-gopher!567"), unicode
.IsNumber
)))
401 func ExampleTrimSpace() {
402 fmt
.Printf("%s", bytes
.TrimSpace([]byte(" \t\n a lone gopher \n\t\r\n")))
403 // Output: a lone gopher
406 func ExampleTrimRight() {
407 fmt
.Print(string(bytes
.TrimRight([]byte("453gopher8257"), "0123456789")))
412 func ExampleTrimRightFunc() {
413 fmt
.Println(string(bytes
.TrimRightFunc([]byte("go-gopher"), unicode
.IsLetter
)))
414 fmt
.Println(string(bytes
.TrimRightFunc([]byte("go-gopher!"), unicode
.IsPunct
)))
415 fmt
.Println(string(bytes
.TrimRightFunc([]byte("1234go-gopher!567"), unicode
.IsNumber
)))
422 func ExampleToUpper() {
423 fmt
.Printf("%s", bytes
.ToUpper([]byte("Gopher")))
427 func ExampleToLower() {
428 fmt
.Printf("%s", bytes
.ToLower([]byte("Gopher")))
432 func ExampleReader_Len() {
433 fmt
.Println(bytes
.NewReader([]byte("Hi!")).Len())
434 fmt
.Println(bytes
.NewReader([]byte("こんにちは!")).Len())