Go でデバッグ用にポインター フィールドをきれいに印刷する方法?
Go プログラムをデバッグするときに、内容を印刷すると便利ですポインターフィールドを含む構造体の。ただし、デフォルトでは、Go はポインタ フィールドをメモリ アドレスとして出力するため、役に立たない可能性があります。
次のコードを考えてみましょう。
type SomeStruct struct { somePointer *somePointer } type somePointer struct { field string } func main() { fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}}) }
このコードは、必要な文字列の代わりにメモリ アドレスを出力します。価値。逆参照された値を出力するには、go-spew パッケージを使用できます。
import ( "github.com/davecgh/go-spew/spew" ) func main() { s := SomeStruct{ Field1: "Yahoo", Field2: 500, Field3: &somePointer{"I want to see what is in here"}, } spew.Dump(s) }
このコードは spew.Dump 関数を使用して、ポインター フィールドの逆参照された値を含む SomeStruct の内容を出力します。出力は次のようになります。
(main.SomeStruct) { Field1: (string) "Yahoo", Field2: (int) 500, Field3: (*main.somePointer)(0x2102a7230)({ field: (string) "I want to see what is in here" }) }
この出力には、somePointer 構造体のフィールド フィールドに必要な文字列値が含まれます。 go-spew パッケージは、構造化データを読み取り可能な形式で出力する便利な方法を提供し、ネストされたポインター フィールドを含む複雑な構造のデバッグを容易にします。
以上がGo でデバッグ用にポインター フィールドをきれいに印刷する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。