2017-06-01 20 views
-1

XMLファイルからデータを読み込み、それをgolangの関数に変換する必要があります。 golangでは、この関数をmux.NewRouter()。HandleFunc( "/ url"、functionName)で使用する必要があるためです。 functionNameとして使用するために、XMLファイルから読み込んだこの文字列を関数名に変換する方法が必要です。文字列を関数名に変換する方法

+1

のみ可能。 [Golangで特別な接頭辞または接尾辞を持つすべての関数を呼び出す]の可能な複製(https://stackoverflow.com/questions/37384473/call-all-functions-with-special-prefix-or-suffix-in-golang/37384665# 37384665)。 – icza

+1

これを行う典型的な方法は、initまたはsetup中に 'map [string] func()'を生成することです。ただし、すべての関数が同じシグネチャを持つ必要があるという欠点があります(ただし、これらの関数を呼び出す場所が名前を知っていない場合は、おそらくこれが必須条件となります)。異なる署名が必要な場合は、 'switch'などが必要です。 – Kaedys

答えて

0

タイプとしてメソッドとして呼び出すすべての関数を登録すると、次のようなことができます。あなたは方法がオンになっているし、それは、FUNC署名だとメソッドのインタフェース値と型が戻ってそれを主張し得る構造体を反映

type Foo struct{} 

func (Foo) Bar() { 
    fmt.Println("foobar") 
} 

... 

f := reflect.ValueOf(Foo{}).MethodByName("Bar").Interface().(func()) 
f() 

たRunnable例:レジストリのいくつかの種類と https://play.golang.org/p/m2nywmeD0Y

関連する問題