...
Run Format

Source file src/encoding/csv/example_test.go

Documentation: encoding/csv

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

View as plain text