いろいろ備忘録日記

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

Goメモ-82 (デバッグ時に表示される文字列表現, GoLand, DebugString)

概要

忘れない内にメモメモ。

知らなかったのですが、GoLandでデバッグ時に DebugString() string というメソッドを用意しておくと

デバッガで表示してくれるみたい。

blog.jetbrains.com

v2019.2 から追加された機能みたいですね。

試してみます。

サンプル

package main

import (
    "fmt"
    "os"
)

type myData struct {
    i int
}

// String -- impl fmt.Stringer::String
func (m myData) String() string {
    return fmt.Sprintf("fmt.stringer %d", m.i)
}

// DebugString -- String representation for Debugger
func (m myData) DebugString() string {
    return fmt.Sprintf("debug string %d", m.i)
}

func main() {
    os.Exit(run())
}

func run() int {
    m := myData{i:100}
    fmt.Println(m)
    return 0
}

上記のようなコードを書いてみて、以下のようにデバッガで止めてみました。

f:id:gsf_zero1:20200328152750p:plain
GoLand DebugString() Feature 01

本当だ。確かに DebugString() の内容が表示されてますね。

下のデバッガーペインの方も

f:id:gsf_zero1:20200328152854p:plain
GoLand DebugString() Feature 02

DebugString() の情報が表示されています。

んで、実際の実行結果は当然ですが

f:id:gsf_zero1:20200328152939p:plain
GoLand DebugString() Feature 03

ってなっています。

これは結構便利かもしれませんね。


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

  • いろいろ備忘録日記まとめ

devlights.github.io

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

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com