tablewriter - テーブルデータを綺麗にテキスト出力するGoライブラリ
ここ最近、Go界隈が盛り上がっています。まだライブラリも少ない現在、他言語で実装されているライブラリを含めて様々なソフトウェアがGoで作られています。 そこで今回は一つ変わったソフトウェアを紹介します。Goでアスキー製のテーブルを作成するtablewriterです。
インストールはgetでできます。
$ go get github.com/olekukonko/tablewriter
実行例としてはこんな感じ。
$ ./table
+------+-----------------------+--------+
| NAME | SIGN | RATING |
+------+-----------------------+--------+
| A | The Good | 500 |
| B | The Very very Bad Man | 288 |
| C | The Ugly | 120 |
| D | The Gopher | 800 |
+------+-----------------------+--------+
まさにアスキーテーブルです。コードは次のようになります。
package main
import "os"
import "github.com/olekukonko/tablewriter"
func main() {
data := [][]string{
[]string{"A", "The Good", "500"},
[]string{"B", "The Very very Bad Man", "288"},
[]string{"C", "The Ugly", "120"},
[]string{"D", "The Gopher", "800"},
}
table := tablewriter.NewWriter(os.Stdout)
table.SetHeader([]string{"Name", "Sign", "Rating"})
for _, v := range data {
table.Append(v)
}
table.Render() // Send output
}
さらにCSVファイルを読み込んで処理もできます。
package main
import "os"
import "github.com/olekukonko/tablewriter"
func main() {
table, _ := tablewriter.NewCSV(os.Stdout, "test.csv")
table.SetRowLine(true) // Enable row line
// Change table lines
table.SetCenterSeparator("*")
table.SetColumnSeparator("‡")
table.SetRowSeparator("-")
table.SetAlignment(tablewriter.ALIGN_LEFT)
table.Render()
}
上記のコードの実行結果は次のようになります。
$ ./table
*------------*-----------*---------*
‡ FIRST NAME ‡ LAST NAME ‡ SSN ‡
*------------*-----------*---------*
‡ John ‡ Barry ‡ 123456 ‡
*------------*-----------*---------*
‡ Kathy ‡ Smith ‡ 687987 ‡
*------------*-----------*---------*
‡ Bob ‡ McCornick ‡ 3979870 ‡
*------------*-----------*---------*
配置を指定したり、区切り線の種類が指定できます。コードだけを見れば、何をしているかはだいたい分かるでしょう。これを機会にGo言語に触ってみたいと思う方もいらっしゃるのではないでしょうか。 tablewriterはGo製、MIT Licenseのオープンソース・ソフトウェアです。 olekukonko/tablewriter