関数を文字列キーにマッピングすることは、Go でメソッドを整理および選択するための便利なツールです。ただし、一般的なハードルは、正しい構文と入力を保証することです。 Go で関数のマップを効果的に定義して利用する方法を見てみましょう。
提供されたコードは、関数を指す文字列キーを使用してマップを作成しようとします。ただし、 m := map[string] func {...} で使用される構文は正しくありません。関数ポインターのマップを定義する場合、正しい構文は m := map[string]interface{}{...} です。
さらに、マップ キーに一重引用符 '' を使用することは無効です。文字列キーには二重引用符 "" を使用する必要があります。
実際の例を示すために、次のコードを検討します。
package main import "fmt" func f(p string) { fmt.Println("function f parameter:", p) } func g(p string, q int) { fmt.Println("function g parameters:", p, q) } func main() { m := map[string]interface{}{ "f": f, "g": g, } for k, v := range m { switch k { case "f": v.(func(string))("astring") case "g": v.(func(string, int))("astring", 42) } } }
ここでは、マップ m が作成されます。ここで、各キーは文字列であり、対応する値は関数ポインタです。 switch ステートメントは、キーをチェックし、必要なパラメーターを指定して関数を呼び出す前に、値を適切な関数タイプにキャストします。このアプローチにより、提供されたキーに基づいて動的な関数の選択と実行が可能になります。
以上がGo で関数のマップを正しく定義して使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。