Package table provides a convenient way to generate tabular output of any data, primarily useful for CLI tools.
- Accepts all data types (
string,int,interface{}, everything!) and will use theString() stringmethod of a type if available. - Can specify custom formatting for the header and first column cells for better readability.
- Columns are left-aligned and sized to fit the data, with customizable padding.
- The printed output can be sent to any
io.Writer, defaulting toos.Stdout. - Built to an interface, so you can roll your own
Tableimplementation. - Works well with ANSI colors (fatih/color in the example)!
- Can provide a custom
WidthFuncto accomodate multi- and zero-width characters (such as runewidth)
Download the package:
go get github.com/rodaine/tableExample:
package main
import (
"fmt"
"strings"
"github.com/fatih/color"
"github.com/rodaine/table"
)
func main() {
headerFmt := color.New(color.FgGreen, color.Underline).SprintfFunc()
columnFmt := color.New(color.FgYellow).SprintfFunc()
tbl := table.New("ID", "Name", "Score", "Added")
tbl.WithHeaderFormatter(headerFmt).WithFirstColumnFormatter(columnFmt)
for _, widget := range getWidgets() {
tbl.AddRow(widget.ID, widget.Name, widget.Cost, widget.Added)
}
tbl.Print()
}Consult the documentation for further examples and usage information
table is released under the MIT License (Expat). See the full license.