Golang 範本和存取傳遞給範本的函數的問題
當嘗試使用傳遞給Go 範本的函數時,可能會出現錯誤: “模板:struct.tpl:3:函數“makeGoName”未定義。”要解決此問題,必須在模板解析之前註冊自訂函數。
模板的靜態可分析性需要此限制。要實現此目的,請使用 template.New() 建立一個新模板,並使用傳回的 template.Template 類型的 Template.ParseFiles() 方法。
t, err := template.New("struct.tpl").Funcs(template.FuncMap{ "makeGoName": makeGoName, "makeDBName": makeDBName, }).ParseFiles("templates/struct.tpl")
請注意,template.New() 呼叫應該指定正在執行的檔案的基本名稱。此外,請確保 Template.Execute() 的錯誤處理。
if err := t.Execute(os.Stdout, data); err != nil { fmt.Println(err) }
以上是如何在Go模板中正確註冊自訂函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!