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 5 package csv_test 6 7 import ( 8 "encoding/csv" 9 "fmt" 10 "io" 11 "log" 12 "os" 13 "strings" 14 ) 15 16 func ExampleReader() { 17 in := `first_name,last_name,username 18 "Rob","Pike",rob 19 Ken,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. 44 func ExampleReader_options() { 45 in := `first_name;last_name;username 46 "Rob";"Pike";rob 47 # lines beginning with a # character are ignored 48 Ken;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 65 func ExampleReader_ReadAll() { 66 in := `first_name,last_name,username 67 "Rob","Pike",rob 68 Ken,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 83 func 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 112 func 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