デバッグのためのポインタ フィールドの逆参照
ポインタ フィールドを含む構造体を出力する場合、それらは通常メモリ アドレスとして表示されます。これは、特に構造体に多数のポインター フィールドが含まれる場合、デバッグには不便です。
次の例を考えてみましょう:
package main import "fmt" type SomeStruct struct { somePointer *somePointer } type somePointer struct { field string } func main() { fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}}) }
このコードは、必要な値の代わりにメモリ アドレスを出力します:
{0x10500168}
ポインター フィールドに格納されている実際の値を出力するには、複雑なデータ構造を人間が判読できる形式で出力することに特化した go-spew パッケージを使用できます。
使用方法は次のとおりです。 it:
package main import ( "github.com/davecgh/go-spew/spew" ) type ( SomeStruct struct { Field1 string Field2 int Field3 *somePointer } 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) }
このコードは次の出力を生成します:
(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 サイトの他の関連記事を参照してください。