Так как либа для записи требует интерфейс io.Writer, вы легко можете создать свой прокси-райтер, который будет при встрече каждого \n добавлять еще и \r
В самой примитивной реализации это будет выглядеть так:
package main
import (
"bytes"
"io"
"os"
"github.com/olekukonko/tablewriter"
)
func main() {
data := [][]string{
{"1/1/2014", "Domain name", "2233", "$10.98"},
{"1/1/2014", "January Hosting", "2233", "$54.95"},
{"1/4/2014", "February Hosting", "2233", "$51.00"},
{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"},
}
w := New(os.Stdout)
table := tablewriter.NewWriter(w)
table.SetHeader([]string{"Date", "Description", "CV2", "Amount"})
table.SetFooter([]string{"", "", "Total", "$146.93"}) // Add Footer
table.SetBorder(false) // Set Border to false
table.AppendBulk(data) // Add Bulk Data
table.Render()
}
type ClrfAdder struct {
writer io.Writer
}
func New(w io.Writer) *ClrfAdder {
return &ClrfAdder{
writer: w,
}
}
func (c ClrfAdder) Write(p []byte) (n int, err error) {
replaced := bytes.ReplaceAll(p, []byte("\n"), []byte("\r\n"))
n, err = c.writer.Write(replaced)
if err != nil {
if n > len(p) {
n = len(p)
}
return n, err
}
return len(p), nil
}
Но можно использовать готовые стрим-реплейсеры, например
https://github.com/icholy/replace