Golang テンプレート: 関数をテンプレートに渡す
問題:
関数をテンプレートに追加すると、次のエラーが発生します発生した問題:
Error: template: struct.tpl:3: function "makeGoName" not defined
解決策:
このエラーを解決するには、テンプレートを解析する前にカスタム関数を登録する必要があります。テンプレートは静的分析用に設計されており、パーサーが有効な関数名を他の識別子から区別できる必要があります。
template.ParseFiles() を使用する代わりに、Template.ParseFiles() メソッドを利用します。 template.New() を呼び出します。このメソッドは、テンプレートを解析する前に関数を登録します。
改善されたコード:
t, err := template.New("struct.tpl").Funcs(template.FuncMap{ "makeGoName": makeGoName, "makeDBName": makeDBName, }).ParseFiles("templates/struct.tpl")
さらに、Template.Execute() メソッドはエラーを返します。出力生成に関する潜在的な問題を観察するには、次のエラーを処理します:
if err := t.Execute(os.Stdout, data); err != nil { fmt.Println(err) }
以上がGo テンプレートに関数を渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。