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