いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-650 (goforj/godump)(凄く使いやすいダンプライブラリ)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

最近、以下のライブラリの存在を知りました。

github.com

すごく使いやすいライブラリですねー。Diffも出来るので凄く便利。Laravelから影響受けているみたいですね。

使い方もリポジトリのページに沢山記載されているのと、examplesディレクトリの下に沢山サンプルが用意されているので困りません。

試してみる

リポジトリにある情報で事足りるのですが、一応自分のメモとして残しておきます。

インストール

go get github.com/goforj/godump@latest

main.go

package main

import "github.com/goforj/godump"

type (
    Like struct {
        Id    int
        Value string
    }
    Data struct {
        Name  string
        Age   uint
        Likes []Like
    }
)

func NewData(name string, age uint) *Data {
    d := Data{
        Name: name,
        Age:  age,
    }

    d.Likes = make([]Like, 0)

    return &d
}

func (me *Data) AddLike(v string) {
    me.Likes = append(me.Likes, Like{Id: len(me.Likes) + 1, Value: v})
}

func main() {
    d1 := NewData("FOO", 33)
    d1.AddLike("music")
    d1.AddLike("cycling")

    // ダンプ
    godump.Dump(d1)

    // もう一つデータを生成して比較
    d2 := NewData("foo", 44)
    d2.AddLike("music")
    d2.AddLike("cycling")
    d2.AddLike("programming")

    // 比較
    godump.Diff(d1, d2)
}

実行結果

実際には色付きで出力されます。

   $ task
    <#dump // main.go:38
    #*main.Data {
    +Name  => "FOO" #string
    +Age   => 33 #uint
    +Likes => #[]main.Like [
        0 => #main.Like {
        +Id    => 1 #int
        +Value => "music" #string
        }
        1 => #main.Like {
        +Id    => 2 #int
        +Value => "cycling" #string
        }
    ]
    }
    <#diff // main.go:47
    #*main.Data {
    -   +Name  => "FOO" #string
    -   +Age   => 33 #uint
    +   +Name  => "foo" #string
    +   +Age   => 44 #uint
        +Likes => #[]main.Like [
        0 => #main.Like {
            +Id    => 1 #int
            +Value => "music" #string
        }
        1 => #main.Like {
            +Id    => 2 #int
            +Value => "cycling" #string
        }
    +     2 => #main.Like {
    +       +Id    => 3 #int
    +       +Value => "programming" #string
    +     }
        ]
    }

参考情報

個人的Goのおすすめ書籍

個人的に読んでとても勉強になった書籍さんたちです。


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。