ホームページ > バックエンド開発 > Golang > Go 構造体のプロパティとメソッドの両方をダンプするにはどうすればよいですか?

Go 構造体のプロパティとメソッドの両方をダンプするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-30 19:18:15
オリジナル
211 人が閲覧しました

How Can I Dump Both Properties and Methods of a Go Struct?

Golang での構造体のダンプ メソッド

Golang の "fmt" パッケージには、構造体のプロパティをダンプするための "Printf" メソッドが用意されていますが、構造体のプロパティとメソッドの両方を取得する必要があります。次の例を考えてみましょう。

type Foo struct {
    Prop string
}
func (f Foo)Bar() string {
    return f.Prop
}
ログイン後にコピー

タイプ "Foo" の初期化されたインスタンス内の "Bar()" メソッドの存在を確認するには、"reflect" パッケージの使用を検討してください。その方法は次のとおりです。

fooType := reflect.TypeOf(&Foo{})
for i := 0; i < fooType.NumMethod(); i++ {
    method := fooType.Method(i)
    fmt.Println(method.Name)
}
ログイン後にコピー

型が特定のメソッド セットを実装しているかどうかを判断することが目的の場合は、インターフェイスと型アサーションの方が便利かもしれません。例:

func implementsBar(v interface{}) bool {
    type Barer interface {
        Bar() string
    }
    _, ok := v.(Barer)
    return ok
}
ログイン後にコピー

「Bar()」メソッドの「Foo」のインスタンスをテストするには:

fmt.Println("Foo implements the Bar method:", implementsBar(Foo{}))
ログイン後にコピー

または、型に特定のメソッドがあることを明示的にアサートします。コンパイル時間:

var _ Barer = Foo{}
ログイン後にコピー

以上がGo 構造体のプロパティとメソッドの両方をダンプするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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