Захват вывода шаблона в Go
В шаблоне Go захват вывода подшаблона или непосредственное присвоение его переменной не поддерживается по умолчанию. Однако этого можно достичь, зарегистрировав пользовательскую функцию и используя буфер байтов для получения результата шаблона.
Регистрация пользовательской функции
Чтобы записать выходные данные шаблона, зарегистрируйтесь функция с Template.Funcs(), которая принимает имя шаблона в качестве аргумента и возвращает выходные данные шаблона в виде строки:
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
Выполнение шаблона и сбор результатов
Выполните подшаблон с именем «my-template» с помощью Template.ExecuteTemplate() и присвойте его переменной:
{{$var := execTempl "my-template"}}
Получение вывода
Получите захваченный вывод и используйте его по мере необходимости:
See result: {{$var}}
Полный пример
var t *template.Template func main() { t = template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl)) if err := t.Execute(os.Stdout, nil); err != nil { panic(err) } } const tmpl = ` {{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
Вывод:
See result: my-template content
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3