297
243

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoAdvent Calendar 2014

Day 2

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

Last updated at Posted at 2014-12-01

概要

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にも対応しました

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

297
243
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
297
243

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?