package main
import (
"encoding/csv"
"fmt"
"os"
"strconv"
)
type Postimi struct {
Autori string
Id int
Titulli string
}
var csvFajlli string = "postimet.csv"
func main() {
postimet := []Postimi{
{Id: 1, Autori: "Gabriel Garcia Marquez", Titulli: "Për dashurinë dhe demonë të tjerë"},
{Id: 2, Autori: "Isabel Allende", Titulli: "Shuma e ditëve"},
{Id: 3, Autori: "Dan Brown", Titulli: "Origjina"},
}
// Shkrimi
CsvWrite(postimet)
// Leximi
CsvRead()
}
func CsvWrite(Postimet []Postimi) {
csvFile, err := os.Create(csvFajlli)
if err != nil {
panic(err)
}
defer csvFile.Close()
writer := csv.NewWriter(csvFile)
for _, postim := range Postimet {
rreshti := []string{strconv.Itoa(postim.Id), postim.Autori, postim.Titulli}
err := writer.Write(rreshti)
if err != nil {
panic(err)
}
}
writer.Flush()
}
func CsvRead() {
fajlli, err := os.Open(csvFajlli)
if err != nil {
panic(err)
}
defer fajlli.Close()
reader := csv.NewReader(fajlli)
reader.FieldsPerRecord = -1
rreshtat, err := reader.ReadAll()
if err != nil {
panic(err)
}
var postimet []Postimi
for _, vlera := range rreshtat {
id, _ := strconv.Atoi(vlera[0])
rreshti := Postimi{Id: id, Autori: vlera[1], Titulli: vlera[2]}
postimet = append(postimet, rreshti)
}
fmt.Println(postimet)
// Segmenti i strukteve mund të procesohet më tej...
}
https://play.golang.org/p/VUqfU1UwK73
Rezultati:
[{Gabriel Garcia Marquez 1 Për dashurinë dhe demonë të tjerë} {Isabel Allende 2 Shuma e ditëve} {Dan Brown 3 Origjina}]