ホームページ >バックエンド開発 >Golang >効果的なデバッグのために Go 構造体でポインターの逆参照値を出力するにはどうすればよいですか?

効果的なデバッグのために Go 構造体でポインターの逆参照値を出力するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-06 08:43:021020ブラウズ

How Can I Print Dereferenced Values of Pointers in Go Structs for Effective Debugging?

デバッグのためのフィールドの逆参照

ポインターを含む Go 構造体を出力する場合、通常、出力には実際の値ではなくメモリー アドレスが表示されます。デバッグを改善するには、逆参照された値を出力することが望ましいです。

解決策: go-spew パッケージを使用する

go-spew パッケージは便利なソリューションを提供します。これを使用して、ポインターであるフィールドを含む構造体をダンプし、逆参照された値も表示できます。

例:

次の Go 構造体を考えてみましょう:

package main

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

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

main 関数で、SomeStruct のインスタンスを作成し、spew.Dump:

func main() {
  s := SomeStruct{
    Field1: "Yahoo",
    Field2: 500,
    Field3: &somePointer{"I want to see what is in here"},
  }
  spew.Dump(s)
}

これにより、次の出力が出力されます:

(main.SomeStruct) {
 Field1: (string) "Yahoo",
 Field2: (int) 500,
 Field3: (*main.somePointer)(0x2102a7230)({
  field: (string) "I want to see what is in here"
 })
}

目的の逆参照値 (「ここに何が入っているかを確認したい」) が、Field3 フィールドの下に表示されます。これにより、デバッグ中に複雑な構造体のポインターを簡単に検査できるようになります。

以上が効果的なデバッグのために Go 構造体でポインターの逆参照値を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。