デバッグ中に Go 構造体のポインター フィールドの基になる値を表示するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-07 14:27:03
オリジナル
286 人が閲覧しました

How Can I Display the Underlying Values of Pointer Fields in Go Structs During Debugging?

ポインター フィールドのデバッグ

Go では、ポインター フィールドを含む構造体を出力すると、通常、実際の値ではなくメモリ アドレスが出力されます。これは、デバッグ中、特に多数のポインター フィールドを扱う場合に不便になる可能性があります。

ポインター フィールドの逆参照

ポインター フィールドの基になる値を表示するには、1 つのオプションは手動でアスタリスク演算子 (*) を使用して各フィールドを逆参照します。ただし、このアプローチは、複数のポインター フィールドを持つ構造体の場合は面倒になります。

go-spew の使用

Go は、そのようなシナリオをデバッグするための強力なツール、go-spew パッケージを提供します。 。このパッケージは、任意の値の構造を詳しく調べる簡単な方法を提供します。

次のコードを考えてみましょう。

package main

import (
    "fmt"
    "github.com/davecgh/go-spew/spew"
)

type SomeStruct struct {
    Field1 string
    Field2 int
    Field3 *somePointer
}

type somePointer struct {
    field string
}

func main() {
    s := SomeStruct{
        Field1: "Yahoo",
        Field2: 500,
        Field3: &somePointer{"I want to see what is in here"},
    }
    spew.Dump(s)
}
ログイン後にコピー

Whenこのコードを実行すると、次の出力が表示されます。

(main.SomeStruct) {
 Field1: (string) "Yahoo",
 Field2: (int) 500,
 Field3: (*main.somePointer)(0x2102a7230)({
  field: (string) "I want to see what is in here"
 })
}
ログイン後にコピー

ご覧のとおり、go-spew パッケージは、ポインター フィールドの基礎となる値を含む、より詳細で構造化された出力を提供します。これにより、デバッグと構造体の内容の理解がはるかに簡単になります。

以上がデバッグ中に Go 構造体のポインター フィールドの基になる値を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート