Created
August 13, 2021 09:21
-
-
Save sudaraka94/09413821239c3c1d9a64f5a0629c91c2 to your computer and use it in GitHub Desktop.
Data streaming demo to a csv file in go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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