Ya itu mungkin. A html.Template
sebenarnya adalah sekumpulan file template. Jika Anda menjalankan blok yang ditentukan dalam himpunan ini, ia memiliki akses ke semua blok lain yang ditentukan dalam himpunan ini.
Jika Anda membuat peta set templat seperti itu sendiri, pada dasarnya Anda memiliki fleksibilitas yang sama dengan yang ditawarkan Jinja / Django. Perbedaan satu-satunya adalah paket html / template tidak memiliki akses langsung ke sistem file, jadi Anda harus mengurai dan membuat template sendiri.
Pertimbangkan contoh berikut dengan dua halaman berbeda ("index.html" dan "other.html") yang keduanya diwarisi dari "base.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}}
Dan peta set template berikut:
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"))
Sekarang Anda dapat merender halaman "index.html" dengan memanggil
tmpl["index.html"].Execute("base", data)
dan Anda dapat merender halaman "other.html" dengan memanggil
tmpl["other.html"].Execute("base", data)
Dengan beberapa trik (misalnya, konvensi penamaan yang konsisten dari file template Anda), tmpl
peta dapat dibuat secara otomatis.