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