네 가능합니다. A html.Template
는 실제로 템플릿 파일 집합입니다. 이 세트에서 정의 된 블록을 실행하면이 세트에 정의 된 다른 모든 블록에 액세스 할 수 있습니다.
이러한 템플릿 세트의 맵을 직접 생성하면 기본적으로 Jinja / Django가 제공하는 것과 동일한 유연성을 갖게됩니다. 유일한 차이점은 html / template 패키지는 파일 시스템에 직접 액세스 할 수 없으므로 직접 템플릿 을 구문 분석하고 구성해야한다는 것입니다.
둘 다 "base.html"에서 상속되는 두 개의 다른 페이지 ( "index.html"및 "other.html")가있는 다음 예제를 고려하십시오.
{{define "base"}}<html>
<head>{{template "head" .}}</head>
<body>{{template "body" .}}</body>
</html>{{end}}
{{define "head"}}<title>index</title>{{end}}
{{define "body"}}index{{end}}
{{define "head"}}<title>other</title>{{end}}
{{define "body"}}other{{end}}
다음 템플릿 세트 맵 :
tmpl := make(map[string]*template.Template)
tmpl["index.html"] = template.Must(template.ParseFiles("index.html", "base.html"))
tmpl["other.html"] = template.Must(template.ParseFiles("other.html", "base.html"))
이제 다음을 호출하여 "index.html"페이지를 렌더링 할 수 있습니다.
tmpl["index.html"].Execute("base", data)
다음을 호출하여 "other.html"페이지를 렌더링 할 수 있습니다.
tmpl["other.html"].Execute("base", data)
몇 가지 트릭 (예 : 템플릿 파일의 일관된 이름 지정 규칙)을 사용하면 tmpl
지도를 자동으로 생성 할 수도 있습니다 .