table
Package table provides a convenient way to generate tabular output of any data, primarily useful for CLI tools.
Features
- Accepts all data types (
string
, int
, interface{}
, everything!) and will use the String() string
method 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 to os.Stdout
. - Built to an interface, so you can roll your own
Table
implementation. - Works well with ANSI colors (fatih/color in the example)!
- Can provide a custom
WidthFunc
to accomodate multi- and zero-width characters (such as runewidth)
Usage
Download the package:
go get github.com/rodaine/table
Example:
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
License
table is released under the MIT License (Expat). See the full license.