1. 程式人生 > >009-Go 讀取寫入CSV文件

009-Go 讀取寫入CSV文件

main fmt str lin author light ade lds AS

package main

import(
	"encoding/csv"
	"fmt"
	"os"
	"strconv"
)

type Post struct{
	Id	int
	Content	string
	Author	string
}

func main(){
	csvFile, err := os.Create("posts.csv")
	if err!= nil{
		panic(err)
	}
	defer csvFile.Close()

	posts := []Post{
		Post{Id:100,Content:"Hello go",Author:"張三"},
		Post{Id:200,Content:"Hello java",Author:"李四"},
		Post{Id:300,Content:"Hello php",Author:"王五"},
	}

	writer := csv.NewWriter(csvFile)
	for _,post := range posts{
		line := []string{strconv.Itoa(post.Id), post.Content, post.Author}
		err := writer.Write(line)
		if err != nil{
			panic(err)
		}
	}
	writer.Flush()

	file,err := os.Open("posts.csv")
	if err != nil{
		panic(err)
	}
	defer file.Close()

	reader := csv.NewReader(file)
	reader.FieldsPerRecord = -1
	record, err := reader.ReadAll()
	if err != nil{
		panic(err)
	}

	var myposts []Post
	for _, item := range record{
		id, _ := strconv.ParseInt(item[0], 0, 0)
		post := Post{Id: int(id), Content:item[1], Author:item[2]}
		myposts = append(myposts, post)
	}

	for _, value := range myposts{
		fmt.Printf("Id:%d,Content:%s,Author:%s\n", value.Id, value.Content, value.Author)
	}

}

  

009-Go 讀取寫入CSV文件