Вы бы просто сделали что-то вроде:
func(w http.ResponseWriter, r *http.Request)
var data = [][]string{{"Line1", "Hello"}, {"Line2", "World"}}
buffer := &bytes.Buffer{} // creates IO Writer
writer := csv.NewWriter(buffer)
for _, value := range data {
err := writer.Write(value)
checkError("Cannot write to buffer", err)
}
writer.Flush()
w.Header().Set("Content-Type", "text/csv") // setting the content type header to text/csv
w.Header().Set("Content-Disposition", "attachment;filename=TheCSVFileName.csv")
w.Write(buffer.Bytes())
}