Skip to content

Instantly share code, notes, and snippets.

@sudaraka94
Created August 13, 2021 09:21
Show Gist options
  • Save sudaraka94/09413821239c3c1d9a64f5a0629c91c2 to your computer and use it in GitHub Desktop.
Save sudaraka94/09413821239c3c1d9a64f5a0629c91c2 to your computer and use it in GitHub Desktop.
Data streaming demo to a csv file in go
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
)
type userInfo struct {
Name string
Age float64
}
func getHeaders() []string {
return []string{"name", "age"}
}
func (u *userInfo) getValues() []string {
return []string{u.Name, fmt.Sprintf("%f", u.Age)}
}
func main() {
// create dummy date
users := []userInfo{
{
"sudaraka",
24.4,
},
{
"swee",
24.4,
},
}
// setup writer
csvOut, err := os.Create("demo.csv")
if err != nil {
log.Fatal("Unable to create file")
}
defer csvOut.Close()
writer := csv.NewWriter(csvOut)
defer writer.Flush()
// get headers and write headers
headers := getHeaders()
// write headers
err = writer.Write(headers)
if err != nil {
log.Fatal("Error:", err)
return
}
for _, user := range users {
err = writer.Write(user.getValues())
if err != nil {
log.Fatal("Error:", err)
return
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment