我刚接触golang。这是我的问题:我想获取template.Execute的字符串结果,并且我不想直接对http.ResponsWriter执行这是我的代码,它似乎无法正常工作package mainimport ( "fmt" "os" "template")type ByteSlice []bytefunc (p *ByteSlice) Write(data []byte) (lenght int, err os.Error) { *p = data return len(data), nil}func main() { page := map[string]string{"Title": "Test Text"} tpl, _ := template.ParseFile("test.html") var b ByteSlice tpl.Execute(&b, &page) fmt.Printf(`"html":%s`, b)}和text.html:<html><body> <h1>{{.Title|html}}</h1></body></html>但是我得到的是"html":</h1></body></html>
1 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
ByteSlice的Write方法有问题。它应该将新数据附加到已写入的数据上,但是您的版本将替换已写入的数据。模板代码可能多次调用Write,因此最终只能打印出最后写入的内容。
代替创建ByteSlice,使用bytes.Buffer。
- 1 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消