2016-05-27 10 views
0

go言語機能のアノテーションを取得する方法は? 例: "@のannotation1" と "@のannotation2" を取得する方法go言語機能の注釈を取得するには?

// @annotation1 
// @annotation2 
func Tags() string { 
     return "" 
} 

+0

私が知っている限り、それらはちょうどコメントであり、それらを得る方法はありません。 – evanmcdonnal

+0

しかし、これにはパッケージ[ast](https://godoc.org/go/ast)が関係します。 –

+2

@ T.Claverie私はもちろん、ソースファイルを文字列として解析してコメントを抽出することはできますが、回答で言及したようにフィールドタグを取得するために反射を使用するような正式なものはありません。 – evanmcdonnal

答えて

2

簡単な答えは、Golangの注釈のネイティブサポートがありません。 reflectパッケージから取得できるタグの場合は何が使用されていますか。

したがって、Goにアノテーションはありません。私の知る限り、それらを提供するライブラリはありません。あなたのやりたいことに応じて、通常はタグが十分であり、言語の力を使って目的の結果を得ることができます。

PHPのように、ドキュメント文字列を取得できるように実装することが可能です。しかし、ほとんどの場合、それは必要ではありません。

EDIT:ゴーで

、あなたはastパッケージを介して構造体、フィールド、メソッド、インターフェース、機能(godocは魔法ではありません)のドキュメントへのアクセス権を持っています。ただし、ファイルの解析が必要です。PHPのように、type.getDocComments()のような関数はありません。

したがって、理論的には実装が可能です。しかし、あなたが求めているアノテーションの種類は、単にゴランの哲学の一部ではありません。タグを広範囲に使用するライブラリはたくさんありますが、注釈は使用していません。

1

コメントから特定のタグを引き出す何らかのネイティブサポートについてはわかりませんが、組み込み機能godocは機能のすぐ隣のコメントから抜き出しています。ドキュメントを作成しようとしている場合は、これが便利かもしれません。

godocに加えて、私はgolang plugin for IntelliJがこれらのコメントをインラインでの補完や提案のためのヘルプ/ドキュメントとして引き出すことを知っています。

希望すると便利です。

関連する問題