###Go言語で関数のオブジェクトを元に定義名を取得したい
現在、Echo(ver3.1.0)を用いてURLルーティングをしているのですが、
Middlewareにおいて、振分け先のハンドラに応じた処理分岐をしたいと思っています。
(具体的には、ハンドラ名を元に対象のjsonSchemaを取得し、バリデーションをかけたいと思っています。)
Middlewareにおいて、ContextからHandlerFuncを取得できるので、
reflectパッケージを用いれば、ここから関数の定義名を取得できるかと思っていたのですが、
今のところよいやり方が見つかっていません。
うまく関数の定義名を取得する方法、または上記の要件を満たせるような代替案をお持ちの方がいらっしゃれば、
ご教示いただけないでしょうか。
###試してみたソース
とあるサイトで関数名の取得方法として上がっていたソースを元に、以下のように書いてみました。
handlerName := runtime.FuncForPC(reflect.ValueOf(c.Handler).Pointer()).Name()
結果は、以下の通りです。
"github.com/labstack/echo.(Context).Handler-fm"
なお、以下のようにハンドラが定義されていた場合、Foo
という文字列を取得したいです。
(パッケージ名等が付与されるくらいは問題ないです)
func Foo(c echo.Context) error { return nil }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。