Go で効果的なデバッグのためにポインター フィールドを逆参照するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-10 02:09:02
オリジナル
888 人が閲覧しました

How to Dereference Pointer Fields for Effective Debugging in Go?

デバッグのためのポインタ フィールドの逆参照

ポインタ フィールドを含む構造体を出力する場合、それらは通常メモリ アドレスとして表示されます。これは、特に構造体に多数のポインター フィールドが含まれる場合、デバッグには不便です。

次の例を考えてみましょう:

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート