numbers.csv
1,2,3,4,5
6,7,8,9,10
code sample:
package main
import (
"encoding/csv"
"fmt"
"io"
"log"
"os"
)
func main() {
f, err := os.Open("numbers.csv")
if err != nil {
log.Fatal(err)
}
r := csv.NewReader(f)
for {
record, err := r.Read()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
for value := range record {
fmt.Printf("%s\n", record[value])
}
}
}
users.csv
first_name,last_name,occupation
John,Doe,gardener
Lucy,Smith,teacher
Brian,Bethamy,programmer
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
)
type User struct {
firstName string
lastName string
occupation string
}
func main() {
records, err := readData("users.csv")
if err != nil {
log.Fatal(err)
}
for _, record := range records {
user := User{
firstName: record[0],
lastName: record[1],
occupation: record[2],
}
fmt.Printf("%s %s is a %s\n", user.firstName, user.lastName,
user.occupation)
}
}
func readData(fileName string) ([][]string, error) {
f, err := os.Open(fileName)
if err != nil {
return [][]string{}, err
}
defer f.Close()
r := csv.NewReader(f)
// skip first line
if _, err := r.Read(); err != nil {
return [][]string{}, err
}
records, err := r.ReadAll()
if err != nil {
return [][]string{}, err
}
return records, nil
}
users.csv
# this is users.csv file
John;Doe;gardener
Lucy;Smith;teacher
Brian;Bethamy;programmer
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
)
func main() {
f, err := os.Open("users.csv")
if err != nil {
log.Fatal(err)
}
r := csv.NewReader(f)
r.Comma = ';'
r.Comment = '#'
records, err := r.ReadAll()
if err != nil {
log.Fatal(err)
}
fmt.Print(records)
}
r := csv.NewReader(f)
r.Comma = ';'
r.Comment = '#'
package main
import (
"encoding/csv"
"log"
"os"
)
func main() {
records := [][]string{
{"first_name", "last_name", "occupation"},
{"John", "Doe", "gardener"},
{"Lucy", "Smith", "teacher"},
{"Brian", "Bethamy", "programmer"},
}
f, err := os.Create("users.csv")
defer f.Close()
if err != nil {
log.Fatalln("failed to open file", err)
}
w := csv.NewWriter(f)
defer w.Flush()
for _, record := range records {
if err := w.Write(record); err != nil {
log.Fatalln("error writing record to file", err)
}
}
}
package main
import (
"encoding/csv"
"log"
"os"
)
func main() {
records := [][]string{
{"first_name", "last_name", "occupation"},
{"John", "Doe", "gardener"},
{"Lucy", "Smith", "teacher"},
{"Brian", "Bethamy", "programmer"},
}
f, err := os.Create("users.csv")
defer f.Close()
if err != nil {
log.Fatalln("failed to open file", err)
}
w := csv.NewWriter(f)
err = w.WriteAll(records) // calls Flush internally
if err != nil {
log.Fatal(err)
}
}