ポインターを使用した構造体の Go の印刷出力をカスタマイズするにはどうすればよいですか?
Dec 12, 2024 pm 04:02 PMポインターを含む構造体の印刷出力をカスタマイズする
Go でポインターを含む構造体を印刷する場合、デフォルトの %v 形式指定子を使用すると、望ましい結果。これは、参照された構造体の内容ではなくポインタ アドレスを出力するためです。
これに対処するには、主に 2 つのアプローチがあります。構造体型のカスタム String メソッドを定義するか、出力を手動でフォーマットすることです。
カスタム文字列メソッドの定義
推奨される方法は、含まれる構造体の型。これは、String() 文字列メソッドを構造体に追加することで実行できます。 printf 関数に渡されるフォーマット文字列は、代わりにこのメソッドを呼び出します。
例:
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.Printf("v ==== %v \n", a) // Prints "v ==== A{a:1, B:B{b:2}}" }
手動フォーマット
がない場合String メソッドの場合、個々の構造体メンバーの書式指定子を使用して出力を手動で書式設定できます。
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("v ==== A{a:%d, B:B{b:%d}}\n", a.a, a.B.b) }
以上がポインターを使用した構造体の Go の印刷出力をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOの実際のパフォーマンスを正確に反映するベンチマークを作成するにはどうすればよいですか?
