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)
}
}
原文:https://www.cnblogs.com/yshyee/p/9130989.html