Go でポインターを含む構造体の値を出力する
Go では、ポインターを含む構造体の値を出力する場合、通常は代わりにポインター アドレスが出力されます。実際の値の。これは、ネストされた構造体の内容を検査しようとするときに問題になる可能性があります。
ポインタの代わりに B 構造体の値を出力する方法
この問題を解決するには、次のようにします。 2 つのオプションがあります:
ストリンガーを実装するインターフェイス:
A 構造体と B 構造体に String() メソッドを実装します。このメソッドは、構造体のフォーマットされた文字列表現を返します。実装では、ポインターの代わりに目的の値を出力します。
package main import "fmt" type A struct { a int32 B *B } type B struct { b int32 } func (aa *A) String() string { return fmt.Sprintf("A{a:%d, B:%v}", aa.a, *aa.B) } func (bb *B) String() string { return fmt.Sprintf("B{b:%d}", bb.b) } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Println(a) }
値を手動で出力:
実際の値にアクセスします。手動で構造化し、直接出力します。
package main import "fmt" type A struct { a int32 B *B } type B struct { b int32 } func main() { a := &A{a: 1, B: &B{b: 2}} fmt.Printf("A{a:%d, B:{b:%d}}\n", a.a, a.B.b) }
以上がGoでネストされた構造体のポインタではなく値を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。