go言語の学習メモ10(独自パッケージpp)
アドベントカレンダー
Goのデバッグに便利なpretty printライブラリ「pp」を作った - Qiita
にあったのでphpのvar_dumpみたいなことができると信じて試す
インストール
$ go get "github.com/k0kubun/pp"
サンプルソース
sample_dump1.go(map)
package main; import ( "github.com/k0kubun/pp" ) func main(){ m := map[string]string{ "foo": "bar", "hello": "world"} pp.Println(m) }
↓
$ go run sample_dump1.go { "foo": "bar", "hello": "world", } $
ちゃんと出た
sample_dump2.go(slice)
package main; import ( "github.com/k0kubun/pp" ) func main(){ m := []string{"1111", "2222", "3333"} pp.Println(m) }
↓
$ go run sample_dump2.go []string{ "1111", "2222", "3333", } $
sample_dump3.go(slide map)
package main; import ( "github.com/k0kubun/pp" ) func main(){ var m[] map[string]string m = append(m, map[string]string{"aaa": "111"}) m = append(m, map[string]string{"aaa": "222"}) m = append(m, map[string]string{"aaa": "333"}) pp.Println(m) }
↓
$ go run sample_dump3.go []map[string]string{ { "aaa": "111", }, { "aaa": "222", }, { "aaa": "333", }, } $
sample_dump4.go(struct)
package main; import ( "github.com/k0kubun/pp" ) /** 構造体 定義する場合はデータ型のみ */ type Car struct{ name string weight int } func main(){ var ( _car Car ) _car.name = "hoge" _car.weight = 2000 pp.Println(_car) }
↓
$ go run sample_dump4.go main.Car{ name: "hoge", weight: 2000, } $
所感
結構便利な気がする。実際fmt.Printで出力が困難なデータが簡単に見える場合はこちらを使用するかもしれません。
今回気づいた疑問
そういえばmapにmapって付けられるのだろうか?
動的な2次元配列とか3次元とかにできるか試したことがないのでちょっと試してみよう。