package table import ( "fmt" "text/tabwriter" ) // HumanPrinter prints tabulated data as a table type HumanPrinter struct { writer *tabwriter.Writer fields int } // Headers specify the table headers func (p *HumanPrinter) Headers(headers ...string) error { for _, header := range headers { if _, err := fmt.Fprintf(p.writer, "%s\t", header); err != nil { return nil } } _, err := fmt.Fprintf(p.writer, "\n") return err } func (p *HumanPrinter) Fields(fields ...interface{}) error { for _, header := range fields { if _, err := fmt.Fprintf(p.writer, "%v\t", header); err != nil { return err } } _, err := fmt.Fprintf(p.writer, "\n") return err } func (p *HumanPrinter) StringFields(fields ...string) error { for _, header := range fields { if _, err := fmt.Fprintf(p.writer, "%v\t", header); err != nil { return err } } _, err := fmt.Fprintf(p.writer, "\n") return err } // Flush prints the data set func (p *HumanPrinter) Flush() error { return p.writer.Flush() }