gpt4 book ai didi

templates - 如何获得模板渲染的结果

转载 作者:IT王子 更新时间:2023-10-29 01:34:17 26 4
gpt4 key购买 nike

我是 golang 的新手。

这是我的问题:我想获取一个template.Execute的字符串结果,我不想直接执行到一个http.ResponsWriter

这是我的代码,但似乎效果不佳

package main

import (
"fmt"
"os"
"template"
)

type ByteSlice []byte

func (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>

最佳答案

ByteSlice 的 Write 方法有问题。它应该将新数据附加到已写入的数据中,但您的版本会替换已写入的数据。模板代码很可能不止一次调用 Write,因此您最终只会打印最后写入的内容。

不创建 ByteSlice,而是使用 bytes.Buffer .

关于templates - 如何获得模板渲染的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8609780/

26 4 0