我一直在尝试在 Go 中使用嵌套模板,但是示例或帮助文档对我没有帮助,并且其他 3 个博客中的示例不是我想要的(一个很接近,也许是唯一的方法,但我想做当然)
好的,所以我的代码是针对 App Engine 的,在这里我将对urlfetch
服务器进行操作,然后我想显示一些结果,例如Response
、标头和正文。
const statusTemplate = `
{{define "RT"}}
Status - {{.Status}}
Proto - {{.Proto}}
{{end}}
{{define "HT"}}
{{range $key, $val := .}}
{{$key}} - {{$val}}
{{end}}
{{end}}
{{define "BT"}}
{{.}}
{{end}}
{{define "MT"}}
<html>
<body>
<pre>
-- Response --
{{template "RT"}}
-- Header --
{{template "HT"}}
-- Body --
{{template "BT"}}
</pre>
</body>
</html>
{{end}}
{{template "MT"}}`
func showStatus(w http.ResponseWriterm r *http.Request) {
/*
* code to get:
* resp as http.Response
* header as a map with the header values
* body as an string wit the contents
*/
t := template.Must(template.New("status").Parse(statusTemplate)
t.ExecuteTemplate(w, "RT", resp)
t.ExecuteTemplate(w, "HT", header)
t.ExecuteTemplate(w, "BT", body)
t.Execute(w, nil)
}
我的代码实际上输出了具有正确值的 RT、HT 和 BT 模板,然后将 MT 模板输出为空(MT 代表主模板)。
所以......我如何使用字符串变量中的嵌套表单,以便上面的示例有效?