Edited at
GoDay 2

Goのデバッグに便利なpretty printライブラリ「pp」を作った

More than 3 years have passed since last update.


概要

k0kubun/ppという、pretty printライブラリを作った。

任意の型のオブジェクトをpp.Print()に渡すと色つきでpretty printしてくれるという非常にシンプルなもの。


作った背景

fmt.Printf("%#v", ...)等ではわかりづらい複雑なmapやstructをdebug printするときは、pretty printを使うと便利。既存のpretty printライブラリには、GitHubで人気なものだとdavecgh/go-spewkr/prettyなどがある。

いままではGoでデバッグのために複雑な構造をダンプするときこれらを使っていたのだが、必要以上に型の情報が書かれていたり、大きなものだと白黒なのでパッと見てわかりづらいなどの問題があった。

そこで、型やフィールドごとに別の色をつけることで視認性を高め、ビルトインの型情報は色にまかせて省略することで視認性を高くしたpretty printerを作った。

色はRubyで人気のREPLであるpryの真似をしている。


使い方

どんな型だろうととにかくpp.Print()を呼べば良い。全ての型に対応している。

import "github.com/k0kubun/pp"

m := map[string]string{"foo": "bar", "hello": "world"}
pp.Print(m)


API

fmtパッケージに似たAPIが用意されている。

http://godoc.org/github.com/k0kubun/pp

pp.Print()

pp.Println()
pp.Sprint()
pp.Fprintf()
// ...


デモ

mapやstructがネストしているような複雑な構造のダンプに向いている。


Tweet


Favorite event


追記: windows対応しました

mattnさんのコメントを受けてwindowsにも対応しました

機会があれば是非お試しください。