デバッグのためのフィールドの逆参照
ポインターを含む 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 サイトの他の関連記事を参照してください。