アクセサー メソッドとデバッグのための逆参照
このコード スニペットでは、ポインターである構造体フィールドの値を出力しています。別の構造体に。出力は、実際の値ではなく、参照先の構造体のメモリ アドレスです。
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"}}) }
デバッグの目的では、フィールドの実際の値を出力することをお勧めします。これを実現するには、アクセサー メソッドを使用するか、ポインターを逆参照する 2 つの方法があります。
アクセサー メソッド
各ポインター フィールドのゲッター メソッドを作成して、実際の値を取得できます。 。例:
func (s SomeStruct) GetFieldValue() string { if s.somePointer == nil { return "" } return s.somePointer.field }
その後、コード内で getter メソッドを呼び出して値を出力できます。
fmt.Println(SomeStruct{&somePointer{"I want to see what is in here"}}.GetFieldValue())
このアプローチにより、出力の書式設定と、逆参照を必要とせずにフィールド値にアクセスする便利な方法を提供します。
逆参照
ポインターを直接逆参照したい場合は、次の構文を使用できます。
fmt.Println(*SomeStruct{&somePointer{"I want to see what is in here"}}.somePointer)
ただし、nil ポインターの逆参照は実行時パニックを引き起こす可能性があるため、このアプローチには注意が必要です。ポインタが非 nil であることが確実でない限り、安全のためゲッター メソッドを使用することをお勧めします。
以上がアクセサ メソッドと逆参照: ポインタ フィールドのデバッグにはどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。