goで texttableを描画するパッケージを書いてみました

goの勉強のため, 以前 Perlで書いたものを移植してみました。
特に並列処理すべき部分なんかもなかったので goらしさは 0です。

サンプルコード

マルチバイト文字や改行には対応しています。全角幅の文字幅の取得には
@さんの go-runewidthを利用しました.

package main

import "github.com/syohex/go-texttable"
import "fmt"

func main() {
	tbl := &texttable.TextTable{}
	tbl.SetHeader("プログラミング言語\n(Programming Language)",
		"よみがな\n(Yomigana)", "作者\n(Author)")

	tbl.AddRow("Python", "ぱいそん", "グイド・ヴァンロッサム")
	tbl.AddRow("Perl", "ぱーる", "ラリーウォール")
	tbl.AddRow("Ruby", "るびぃ", "まつもとゆきひろ")
	tbl.AddRow("Erlang", "あーらん", "ジョーアームストロング")
	tbl.AddRow("D言語", "でぃーげんご", "ウォルター・ブライト")

	fmt.Println(tbl.Draw())
}

イメージ

上記のコードの結果は以下のようになります。

おわりに

いろいろ気になる部分があるのでもっと勉強して直していきたい
ですね。Goは LLにはないめんどくささも多々ありますが、良いと思える
部分もたくさんあるので、ぜひ身につけたいですね。