| | |
| | |
| | |
| |
|
| | package bufio_test |
| |
|
| | import ( |
| | "bufio" |
| | "bytes" |
| | "fmt" |
| | "os" |
| | "strconv" |
| | "strings" |
| | ) |
| |
|
| | func ExampleWriter() { |
| | w := bufio.NewWriter(os.Stdout) |
| | fmt.Fprint(w, "Hello, ") |
| | fmt.Fprint(w, "world!") |
| | w.Flush() |
| | |
| | } |
| |
|
| | func ExampleWriter_AvailableBuffer() { |
| | w := bufio.NewWriter(os.Stdout) |
| | for _, i := range []int64{1, 2, 3, 4} { |
| | b := w.AvailableBuffer() |
| | b = strconv.AppendInt(b, i, 10) |
| | b = append(b, ' ') |
| | w.Write(b) |
| | } |
| | w.Flush() |
| | |
| | } |
| |
|
| | |
| | func ExampleWriter_ReadFrom() { |
| | var buf bytes.Buffer |
| | writer := bufio.NewWriter(&buf) |
| |
|
| | data := "Hello, world!\nThis is a ReadFrom example." |
| | reader := strings.NewReader(data) |
| |
|
| | n, err := writer.ReadFrom(reader) |
| | if err != nil { |
| | fmt.Println("ReadFrom Error:", err) |
| | return |
| | } |
| |
|
| | if err = writer.Flush(); err != nil { |
| | fmt.Println("Flush Error:", err) |
| | return |
| | } |
| |
|
| | fmt.Println("Bytes written:", n) |
| | fmt.Println("Buffer contents:", buf.String()) |
| | |
| | |
| | |
| | |
| | } |
| |
|
| | |
| | func ExampleScanner_lines() { |
| | scanner := bufio.NewScanner(os.Stdin) |
| | for scanner.Scan() { |
| | fmt.Println(scanner.Text()) |
| | } |
| | if err := scanner.Err(); err != nil { |
| | fmt.Fprintln(os.Stderr, "reading standard input:", err) |
| | } |
| | } |
| |
|
| | |
| | func ExampleScanner_Bytes() { |
| | scanner := bufio.NewScanner(strings.NewReader("gopher")) |
| | for scanner.Scan() { |
| | fmt.Println(len(scanner.Bytes()) == 6) |
| | } |
| | if err := scanner.Err(); err != nil { |
| | fmt.Fprintln(os.Stderr, "shouldn't see an error scanning a string") |
| | } |
| | |
| | |
| | } |
| |
|
| | |
| | |
| | func ExampleScanner_words() { |
| | |
| | const input = "Now is the winter of our discontent,\nMade glorious summer by this sun of York.\n" |
| | scanner := bufio.NewScanner(strings.NewReader(input)) |
| | |
| | scanner.Split(bufio.ScanWords) |
| | |
| | count := 0 |
| | for scanner.Scan() { |
| | count++ |
| | } |
| | if err := scanner.Err(); err != nil { |
| | fmt.Fprintln(os.Stderr, "reading input:", err) |
| | } |
| | fmt.Printf("%d\n", count) |
| | |
| | } |
| |
|
| | |
| | |
| | func ExampleScanner_custom() { |
| | |
| | const input = "1234 5678 1234567901234567890" |
| | scanner := bufio.NewScanner(strings.NewReader(input)) |
| | |
| | split := func(data []byte, atEOF bool) (advance int, token []byte, err error) { |
| | advance, token, err = bufio.ScanWords(data, atEOF) |
| | if err == nil && token != nil { |
| | _, err = strconv.ParseInt(string(token), 10, 32) |
| | } |
| | return |
| | } |
| | |
| | scanner.Split(split) |
| | |
| | for scanner.Scan() { |
| | fmt.Printf("%s\n", scanner.Text()) |
| | } |
| |
|
| | if err := scanner.Err(); err != nil { |
| | fmt.Printf("Invalid input: %s", err) |
| | } |
| | |
| | |
| | |
| | |
| | } |
| |
|
| | |
| | |
| | func ExampleScanner_emptyFinalToken() { |
| | |
| | const input = "1,2,3,4," |
| | scanner := bufio.NewScanner(strings.NewReader(input)) |
| | |
| | onComma := func(data []byte, atEOF bool) (advance int, token []byte, err error) { |
| | for i := 0; i < len(data); i++ { |
| | if data[i] == ',' { |
| | return i + 1, data[:i], nil |
| | } |
| | } |
| | if !atEOF { |
| | return 0, nil, nil |
| | } |
| | |
| | |
| | |
| | return 0, data, bufio.ErrFinalToken |
| | } |
| | scanner.Split(onComma) |
| | |
| | for scanner.Scan() { |
| | fmt.Printf("%q ", scanner.Text()) |
| | } |
| | if err := scanner.Err(); err != nil { |
| | fmt.Fprintln(os.Stderr, "reading input:", err) |
| | } |
| | |
| | } |
| |
|
| | |
| | |
| | func ExampleScanner_earlyStop() { |
| | onComma := func(data []byte, atEOF bool) (advance int, token []byte, err error) { |
| | i := bytes.IndexByte(data, ',') |
| | if i == -1 { |
| | if !atEOF { |
| | return 0, nil, nil |
| | } |
| | |
| | return 0, data, bufio.ErrFinalToken |
| | } |
| | |
| | if string(data[:i]) == "STOP" { |
| | return i + 1, nil, bufio.ErrFinalToken |
| | } |
| | |
| | return i + 1, data[:i], nil |
| | } |
| | const input = "1,2,STOP,4," |
| | scanner := bufio.NewScanner(strings.NewReader(input)) |
| | scanner.Split(onComma) |
| | for scanner.Scan() { |
| | fmt.Printf("Got a token %q\n", scanner.Text()) |
| | } |
| | if err := scanner.Err(); err != nil { |
| | fmt.Fprintln(os.Stderr, "reading input:", err) |
| | } |
| | |
| | |
| | |
| | } |
| |
|