Шаблоны Golang (и передача функций в шаблон)
Я получаю сообщение об ошибке при попытке получить доступ к функции, которую я передаю моему шаблону:
Error: template: struct.tpl:3: function "makeGoName" not defined
Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю не так?
Файл шаблона (struct.tpl):
type {{.data.tableName}} struct {
{{range $key, $value := .data.tableData}}
{{makeGoName $value.colName}} {{$value.colType}} `db:"{{makeDBName $value.dbColName}},json:"{{$value.dbColName}}"`
{{end}}
}
Файл вызова:
type tplData struct {
tableName string
tableData interface{}
}
func doStuff() {
t, err := template.ParseFiles("templates/struct.tpl")
if err != nil {
errorQuit(err)
}
t = t.Funcs(template.FuncMap{
"makeGoName": makeGoName,
"makeDBName": makeDBName,
})
data := tplData{
tableName: tableName,
tableData: tableInfo,
}
t.Execute(os.Stdout, data)
}
func makeGoName(name string) string {
return name
}
func makeDBName(name string) string {
return name
}
Это для программы, которая генерирует структурный шаблонный код (на случай, если кому-то интересно, почему я делаю это в своем шаблоне).