009-Go 读取写入CSV文件

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

}

  

猜你喜欢

转载自www.cnblogs.com/yshyee/p/9130989.html
今日推荐