0
点赞
收藏
分享

微信扫一扫

go存储之CSV

CSV格式是一种文本格式,应用比较广泛,可以通过encoding/csv包进行操作。

type Person struct {
Id int
Name string
}

csvFile, err := os.Create("person.csv")
if err != nil {
panic(err)
}

defer csvFile.Close()
allPersons := []Person{
Person{Id: 1, Name: "刘备"},
Person{Id: 2, Name: "关羽"},
Person{Id: 3, Name: "张飞"},
Person{Id: 4, Name: "刘备"},
}
writer := csv.NewWriter(csvFile)
for _, person := range allPersons {
line := []string{
strconv.Itoa(person.Id),
person.Name,
}

err := writer.Write(line)
if err != nil {
panic(err)
}

}

先用Create方法生成csv文件,allPersons是需要写入文件的数据,NewWriter函数创建一个写入器,并把文件用作参数,将其传递给写入器,最后调用写入器的Write方法,将一系列由字符串组成的切片写入CSV文件。

file, err := os.Open("person.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 persons []Person
for _, item := range record {
id, _ := strconv.ParseInt(item[0], 0, 0)
person := Person{Id: int(id), Name: item[1]}
persons = append(persons, person)

}

先Open打开文件,使用NewReader生成读取器,使用ReadAll方法读取全部记录,返回数据切片,最后循环切片组装数据为Person切片

举报

相关推荐

0 条评论