2016-08-15 8 views
1

私はGolangと一緒に遊んでいます。変数に使用できるすべてのメソッドやプロパティを一覧表示できる方法があるかどうかを知りたいと思います。 Rubyでは、単にsome_variable.methodsを使用して、some_variableで定義されているすべてのメソッドを取得できます。ゴランにも同様のことがありますか?GolangのRubyの「メソッド」メソッドと同等のものは何ですか?

+2

質問を「反射」とタグ付けしたので、どこを見ているか分かります。「パッケージ反映」。特にhttps://golang.org/pkg/reflect/#Value.Method。 – Volker

答えて

6

はい、できます。反射では、各reflect.Typeオブジェクトは、実際の型が公開するすべてのメソッドを列挙できます。

import (
    "fmt" 
    "reflect" 
) 

type Foo struct { 
} 

func (f Foo) Bar() { 
} 

func (f Foo) Baz() { 
} 

func main() { 

    t := reflect.TypeOf(Foo{}) 
    for i := 0; i < t.NumMethod(); i++ { 
     fmt.Println(t.Method(i).Name) 
    } 
} 
// Output: 
// Bar 
// Baz 

また、これは何が必要に応じて、reflect.Value上で行うことができますが、それは移動で行うには非常に一般的または慣用的なものではありません。

しかし実際の質問は、ここで何を達成しようとしているのですか?タイプがインタフェースを実装しているかどうか、あるいはこのようなものをチェックしようとしていますか?おそらくあなたの目標にはより簡単な解決策があります。あなたの実際の目標は何ですか?

+0

ありがとうございます。私は、Golangを現在学んでいるので、変数に使用できるすべてのメソッドやプロパティをすばやく見たいだけです。 – user130268

+4

@ user130268標準ライブラリのドキュメントは、より良い解決策です。IMHO :) –

2

開発フェーズguru開発ツールでのみ必要な場合は、多くのお手伝いをすることができます。

関連する問題