ใช่มันเป็นไปได้ A html.Template
คือชุดของไฟล์เทมเพลต หากคุณดำเนินการบล็อกที่กำหนดไว้ในชุดนี้บล็อกจะสามารถเข้าถึงบล็อกอื่น ๆ ทั้งหมดที่กำหนดไว้ในชุดนี้
หากคุณสร้างแผนที่ของชุดเทมเพลตดังกล่าวด้วยตัวคุณเองคุณจะมีความยืดหยุ่นเช่นเดียวกับที่ Jinja / Django เสนอ ข้อแตกต่างเพียงอย่างเดียวคือแพคเกจhtml / templateไม่มีการเข้าถึงระบบไฟล์โดยตรงดังนั้นคุณต้องแยกวิเคราะห์และเขียนเทมเพลตด้วยตัวคุณเอง
ลองพิจารณาตัวอย่างต่อไปนี้กับสองหน้าที่แตกต่างกัน ("index.html" และ "other.html") ที่ทั้งสองสืบทอดมาจาก "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}}
และแผนผังชุดเทมเพลตต่อไปนี้:
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
แผนที่โดยอัตโนมัติได้