| // Copyright 2015 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 csv_test |
| |
| import ( |
| "encoding/csv" |
| "fmt" |
| "io" |
| "log" |
| "os" |
| "strings" |
| ) |
| |
| func ExampleReader() { |
| in := `first_name,last_name,username |
| "Rob","Pike",rob |
| Ken,Thompson,ken |
| "Robert","Griesemer","gri" |
| ` |
| r := csv.NewReader(strings.NewReader(in)) |
| |
| for { |
| record, err := r.Read() |
| if err == io.EOF { |
| break |
| } |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| fmt.Println(record) |
| } |
| // Output: |
| // [first_name last_name username] |
| // [Rob Pike rob] |
| // [Ken Thompson ken] |
| // [Robert Griesemer gri] |
| } |
| |
| // This example shows how csv.Reader can be configured to handle other |
| // types of CSV files. |
| func ExampleReader_options() { |
| in := `first_name;last_name;username |
| "Rob";"Pike";rob |
| # lines beginning with a # character are ignored |
| Ken;Thompson;ken |
| "Robert";"Griesemer";"gri" |
| ` |
| r := csv.NewReader(strings.NewReader(in)) |
| r.Comma = ';' |
| r.Comment = '#' |
| |
| records, err := r.ReadAll() |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| fmt.Print(records) |
| // Output: |
| // [[first_name last_name username] [Rob Pike rob] [Ken Thompson ken] [Robert Griesemer gri]] |
| } |
| |
| func ExampleReader_ReadAll() { |
| in := `first_name,last_name,username |
| "Rob","Pike",rob |
| Ken,Thompson,ken |
| "Robert","Griesemer","gri" |
| ` |
| r := csv.NewReader(strings.NewReader(in)) |
| |
| records, err := r.ReadAll() |
| if err != nil { |
| log.Fatal(err) |
| } |
| |
| fmt.Print(records) |
| // Output: |
| // [[first_name last_name username] [Rob Pike rob] [Ken Thompson ken] [Robert Griesemer gri]] |
| } |
| |
| func ExampleWriter() { |
| records := [][]string{ |
| {"first_name", "last_name", "username"}, |
| {"Rob", "Pike", "rob"}, |
| {"Ken", "Thompson", "ken"}, |
| {"Robert", "Griesemer", "gri"}, |
| } |
| |
| w := csv.NewWriter(os.Stdout) |
| |
| for _, record := range records { |
| if err := w.Write(record); err != nil { |
| log.Fatalln("error writing record to csv:", err) |
| } |
| } |
| |
| // Write any buffered data to the underlying writer (standard output). |
| w.Flush() |
| |
| if err := w.Error(); err != nil { |
| log.Fatal(err) |
| } |
| // Output: |
| // first_name,last_name,username |
| // Rob,Pike,rob |
| // Ken,Thompson,ken |
| // Robert,Griesemer,gri |
| } |
| |
| func ExampleWriter_WriteAll() { |
| records := [][]string{ |
| {"first_name", "last_name", "username"}, |
| {"Rob", "Pike", "rob"}, |
| {"Ken", "Thompson", "ken"}, |
| {"Robert", "Griesemer", "gri"}, |
| } |
| |
| w := csv.NewWriter(os.Stdout) |
| w.WriteAll(records) // calls Flush internally |
| |
| if err := w.Error(); err != nil { |
| log.Fatalln("error writing csv:", err) |
| } |
| // Output: |
| // first_name,last_name,username |
| // Rob,Pike,rob |
| // Ken,Thompson,ken |
| // Robert,Griesemer,gri |
| } |