我需要使用*template.Execute方法,但我希望结果为字符串或byte [],以便我可以将它传递给另一个*template.Execute但该方法将其结果写入writer.有没有办法创建一个写入我定义的变量的编写器?
小智 7
您还可以用于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())
}
Run Code Online (Sandbox Code Playgroud)
https://golang.org/pkg/strings#Builder
使用的实例bytes.Buffer,它实现io.Writer:
var buff bytes.Buffer
if err := tpl.Execute(&buff, data); err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以string使用buff.String()或使用[]byte结果获得结果buff.Bytes().