英文:
How can I render a template in Go without any variables?
问题
我已经使用以下代码将模板文件加载到内存中:
t := template.New("master")
tpl, err := t.ParseFiles("templates/index.html")
现在我想将该模板绘制到一个字符串中,所以我的index.html
文件非常空:
{{define "master"}}
Hello World
{{end}}
我刚刚开始,所以还没有任何数据。有没有办法在没有数据的情况下将Template
对象转换为字符串?
英文:
I've loaded a template file into memory with the following code:
t := template.New("master")
tpl, err := t.ParseFiles("templates/index.html")
Now I want to draw that template into a string, so my index.html
is pretty empty:
{{define "master"}}
Hello World
{{end}}
I'm just starting out, so I don't have any data yet. Is there a way I can convert the Template
object into a string without data?
答案1
得分: 3
如果您的模板尚未使用任何变量,您可以将任何值作为数据传递给模板进行渲染。因此,要将模板渲染到标准输出,您可以使用以下示例:
tpl.Execute(os.Stdout, nil)
如果您真的想将模板渲染为字符串,您可以使用bytes.Buffer
作为中间缓冲区:
var buf bytes.Buffer
tpl.Execute(&buf, nil)
str := buf.String()
英文:
If your template doesn't (yet) use any variables, you can just pass any value as data to render the template. So, to render the template to stdout, you could for example use:
tpl.Execute(os.Stdout, nil)
If you really want to render the template to a string, you can use a bytes.Buffer
as an intermediary:
var buf bytes.Buffer
tpl.Execute(&buf, nil)
str := buf.String()
答案2
得分: -1
这在Go语言中是不可能的,这是设计上的限制 - 如果你没有数据,模板包就是不必要的开销。
如果你没有数据,只需使用io
包读取文件,而不是使用模板。
英文:
This is impossible in Go, by design - if you don't have data, the Template package is unnecessary overhead.
If you have no data, just read the file using the io
package, instead of using templates.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论