In Go, encoding a struct to CSV format and decoding it back can be accomplished using the built-in `encoding/csv` package. Below is an example demonstrating how to perform these operations.
package main
import (
"encoding/csv"
"os"
)
type Employee struct {
Name string
Age int
Email string
}
func main() {
employees := []Employee{
{"Alice", 30, "alice@example.com"},
{"Bob", 25, "bob@example.com"},
}
file, err := os.Create("employees.csv")
if err != nil {
panic(err)
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
// Write header
err = writer.Write([]string{"Name", "Age", "Email"})
if err != nil {
panic(err)
}
// Write records
for _, emp := range employees {
err := writer.Write([]string{emp.Name, string(emp.Age), emp.Email})
if err != nil {
panic(err)
}
}
}
package main
import (
"encoding/csv"
"os"
"strconv"
)
type Employee struct {
Name string
Age int
Email string
}
func main() {
file, err := os.Open("employees.csv")
if err != nil {
panic(err)
}
defer file.Close()
reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
panic(err)
}
var employees []Employee
for _, record := range records[1:] { // Skip header
age, _ := strconv.Atoi(record[1])
emp := Employee{Name: record[0], Age: age, Email: record[2]}
employees = append(employees, emp)
}
}
How do I avoid rehashing overhead with std::set in multithreaded code?
How do I find elements with custom comparators with std::set for embedded targets?
How do I erase elements while iterating with std::set for embedded targets?
How do I provide stable iteration order with std::unordered_map for large datasets?
How do I reserve capacity ahead of time with std::unordered_map for large datasets?
How do I erase elements while iterating with std::unordered_map in multithreaded code?
How do I provide stable iteration order with std::map for embedded targets?
How do I provide stable iteration order with std::map in multithreaded code?
How do I avoid rehashing overhead with std::map in performance-sensitive code?
How do I merge two containers efficiently with std::map for embedded targets?