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