Shembull: Shkrimi dhe leximi nga fajlli i formatit CSV

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}]
All Rights Reserved Theme by 404 THEME.