GitPedia

Table

Produces a string that represents slice data in a text table, inspired by gajus/table.

From modood·Updated May 24, 2026·View on GitHub·

Produces a string that represents slice of structs data in a text table, inspired by gajus/table. The project is written primarily in Go, distributed under the MIT License license, first published in 2017. Key topics include: ascii, format, output, print, sheet.

table

Build Status
Coverage Status
GoDoc

Produces a string that represents slice of structs data in a text table, inspired by gajus/table.

Features:

  • No dependency.
  • Cell content aligned.
  • Column width self-adaptation
  • Support type of struct field: int, float, string, bool, slice, struct, map, time.Time and everything.
  • Support custom table header by declaring optional tag: table.(Thanks @skyfireitdiy)

Installation

$ go get github.com/modood/table

Quick start

go
package main import ( "github.com/modood/table" ) type House struct { Name string `table:"Name"` Sigil string Motto string } func main() { hs := []House{ {"Stark", "direwolf", "Winter is coming"}, {"Targaryen", "dragon", "Fire and Blood"}, {"Lannister", "lion", "Hear Me Roar"}, } // Output to stdout table.Output(hs) // Or just return table string and then do something s := table.Table(hs) _ = s }

output:

┌───────────┬──────────┬──────────────────┐
│ Name      │ Sigil    │ Motto            │
├───────────┼──────────┼──────────────────┤
│ Stark     │ direwolf │ Winter is coming │
│ Targaryen │ dragon   │ Fire and Blood   │
│ Lannister │ lion     │ Hear Me Roar     │
└───────────┴──────────┴──────────────────┘

Document

  • func Output(slice interface{})

    formats slice of structs data and writes to standard output.(Using box drawing characters)

  • func OutputA(slice interface{})

    formats slice of structs data and writes to standard output.(Using standard ascii characters)

  • func Table(slice interface{}) string

    formats slice of structs data and returns the resulting string.(Using box drawing characters)

  • func AsciiTable(slice interface{}) string

    formats slice of structs data and returns the resulting string.(Using standard ascii characters)

  • compare box drawing characters with standard ascii characters

    box drawing:

    ┌───────────┬──────────┬──────────────────┐
    │ Name      │ Sigil    │ Motto            │
    ├───────────┼──────────┼──────────────────┤
    │ Stark     │ direwolf │ Winter is coming │
    │ Targaryen │ dragon   │ Fire and Blood   │
    │ Lannister │ lion     │ Hear Me Roar     │
    └───────────┴──────────┴──────────────────┘
    

    standard ascii:

    +-----------+----------+------------------+
    | Name      | Sigil    | Motto            |
    +-----------+----------+------------------+
    | Stark     | direwolf | Winter is coming |
    | Targaryen | dragon   | Fire and Blood   |
    | Lannister | lion     | Hear Me Roar     |
    +-----------+----------+------------------+
    

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

this repo is released under the MIT License.

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from modood/table via the GitHub API.Last fetched: 6/26/2026