1// Copyright 2015 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. 4 5package csv_test 6 7import ( 8 "encoding/csv" 9 "fmt" 10 "io" 11 "log" 12 "os" 13 "strings" 14) 15 16func ExampleReader() { 17 in := `first_name,last_name,username 18"Rob","Pike",rob 19Ken,Thompson,ken 20"Robert","Griesemer","gri" 21` 22 r := csv.NewReader(strings.NewReader(in)) 23 24 for { 25 record, err := r.Read() 26 if err == io.EOF { 27 break 28 } 29 if err != nil { 30 log.Fatal(err) 31 } 32 33 fmt.Println(record) 34 } 35 // Output: 36 // [first_name last_name username] 37 // [Rob Pike rob] 38 // [Ken Thompson ken] 39 // [Robert Griesemer gri] 40} 41 42// This example shows how csv.Reader can be configured to handle other 43// types of CSV files. 44func ExampleReader_options() { 45 in := `first_name;last_name;username 46"Rob";"Pike";rob 47# lines beginning with a # character are ignored 48Ken;Thompson;ken 49"Robert";"Griesemer";"gri" 50` 51 r := csv.NewReader(strings.NewReader(in)) 52 r.Comma = ';' 53 r.Comment = '#' 54 55 records, err := r.ReadAll() 56 if err != nil { 57 log.Fatal(err) 58 } 59 60 fmt.Print(records) 61 // Output: 62 // [[first_name last_name username] [Rob Pike rob] [Ken Thompson ken] [Robert Griesemer gri]] 63} 64 65func ExampleReader_ReadAll() { 66 in := `first_name,last_name,username 67"Rob","Pike",rob 68Ken,Thompson,ken 69"Robert","Griesemer","gri" 70` 71 r := csv.NewReader(strings.NewReader(in)) 72 73 records, err := r.ReadAll() 74 if err != nil { 75 log.Fatal(err) 76 } 77 78 fmt.Print(records) 79 // Output: 80 // [[first_name last_name username] [Rob Pike rob] [Ken Thompson ken] [Robert Griesemer gri]] 81} 82 83func ExampleWriter() { 84 records := [][]string{ 85 {"first_name", "last_name", "username"}, 86 {"Rob", "Pike", "rob"}, 87 {"Ken", "Thompson", "ken"}, 88 {"Robert", "Griesemer", "gri"}, 89 } 90 91 w := csv.NewWriter(os.Stdout) 92 93 for _, record := range records { 94 if err := w.Write(record); err != nil { 95 log.Fatalln("error writing record to csv:", err) 96 } 97 } 98 99 // Write any buffered data to the underlying writer (standard output). 100 w.Flush() 101 102 if err := w.Error(); err != nil { 103 log.Fatal(err) 104 } 105 // Output: 106 // first_name,last_name,username 107 // Rob,Pike,rob 108 // Ken,Thompson,ken 109 // Robert,Griesemer,gri 110} 111 112func ExampleWriter_WriteAll() { 113 records := [][]string{ 114 {"first_name", "last_name", "username"}, 115 {"Rob", "Pike", "rob"}, 116 {"Ken", "Thompson", "ken"}, 117 {"Robert", "Griesemer", "gri"}, 118 } 119 120 w := csv.NewWriter(os.Stdout) 121 w.WriteAll(records) // calls Flush internally 122 123 if err := w.Error(); err != nil { 124 log.Fatalln("error writing csv:", err) 125 } 126 // Output: 127 // first_name,last_name,username 128 // Rob,Pike,rob 129 // Ken,Thompson,ken 130 // Robert,Griesemer,gri 131} 132