ホームページ >バックエンド開発 >Golang >Go でデバッグ用にポインター フィールドをきれいに印刷する方法

Go でデバッグ用にポインター フィールドをきれいに印刷する方法

DDD
DDDオリジナル
2024-11-07 18:00:05563ブラウズ

How to Pretty-Print Pointer Fields for Debugging in Go?

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 サイトの他の関連記事を参照してください。

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