m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

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次元とかにできるか試したことがないのでちょっと試してみよう。