英文:
How to create a writer for a String in Go
问题
我需要使用template.Execute
方法,但我希望将结果作为字符串或字节数组返回,以便我可以将其传递给另一个template.Execute
方法,但该方法将其结果写入一个写入器(writer)。有没有办法创建一个写入器,使其写入到我定义的变量中?
英文:
I need to use the *template.Execute method but I want the result as a string or byte[] so that I can pass it to another *template.Execute but the method writes its results to a writer. Is there a way to create a writer that will write to a variable I define?
答案1
得分: 28
使用bytes.Buffer
的实例,它实现了io.Writer
接口:
var buff bytes.Buffer
if err := tpl.Execute(&buff, data); err != nil {
panic(err)
}
然后,你可以使用buff.String()
获取一个string
类型的结果,或者使用buff.Bytes()
获取一个[]byte
类型的结果。
英文:
Use an instance of bytes.Buffer
, which implements io.Writer
:
var buff bytes.Buffer
if err := tpl.Execute(&buff, data); err != nil {
panic(err)
}
You can then get a string
result using buff.String()
, or a []byte
result using buff.Bytes()
.
答案2
得分: 5
你也可以使用strings.Builder
来实现这个目的:
package main
import (
"html/template"
"strings"
)
func main() {
t, e := template.New("date").Parse("<p>{{ .month }} - {{ .day }}</p>")
if e != nil {
panic(e)
}
b := new(strings.Builder)
t.Execute(b, map[string]int{"month": 12, "day": 31})
println(b.String())
}
https://golang.org/pkg/strings#Builder
英文:
You can also use strings.Builder
for this purpose:
package main
import (
"html/template"
"strings"
)
func main() {
t, e := template.New("date").Parse("<p>{{ .month }} - {{ .day }}</p>")
if e != nil {
panic(e)
}
b := new(strings.Builder)
t.Execute(b, map[string]int{"month": 12, "day": 31})
println(b.String())
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论