package template import ( "strings" "text/template" ) type Template struct { GlobTemplate *template.Template } var DefaultFuncMap = template.FuncMap{ "hd": hd, "title": strings.Title, "join": strings.Join, "list": func(strs []string) string { return strings.Join(strs, ",") }, } func hd(str []string) string { return str[0] } func NewTemplate() *Template { return &Template{} } func (t *Template) ParseGlob(pattern string) error { parse, err := template.New(""). Funcs(DefaultFuncMap).ParseGlob(pattern) if err != nil { return err } t.GlobTemplate = template.Must(parse, nil) return nil } func (t *Template) ExecuteTemplate(templateName2 string, data interface{}) (string, error) { var buf strings.Builder err := t.GlobTemplate.ExecuteTemplate(&buf, templateName2, data) if err != nil { return "", err } return buf.String(), nil }