Шаблоны, возвращаемые text/template.New()
и html/template.New()
, являются неполными шаблонами без "тела", их пока нельзя использовать для генерации какого-либо вывода,Вы можете проверить это, если попытаетесь выполнить их:
t := ttemplate.New("t")
h := htemplate.New("h")
fmt.Println(t.Execute(os.Stdout, nil))
fmt.Println(h.Execute(os.Stdout, nil))
Выходы (попробуйте на Go Playground ):
template: t: "t" is an incomplete or empty template
template: "h" is an incomplete or empty template
Возврат неполных шаблонов всвязанные шаблоны не имеют значения и являются деталями реализации.Один пакет решил включить его, другой - нет.
Обратите внимание, что если вы «завершите» определения шаблонов, фактически проанализировав что-либо, то оба будут включать и возвращать собственный шаблон в связанные шаблоны, нетразница в них:
t := ttemplate.Must(ttemplate.New("t").Parse("t"))
h := htemplate.Must(htemplate.New("h").Parse("h"))
fmt.Println(len(t.Templates()), len(h.Templates()))
fmt.Println(t.Execute(os.Stdout, nil))
fmt.Println(h.Execute(os.Stdout, nil))
Будет выведено (попробуйте на Go Playground ):
1 1
t<nil>
h<nil>