132 lines
2.6 KiB
Go
132 lines
2.6 KiB
Go
|
// 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 https://golang.org/LICENSE
|
||
|
|
||
|
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
|
||
|
}
|