将模板输出重新分配给变量
在 Go 中,模板提供了一种生成自定义输出的便捷方法。默认情况下,使用 t.Execute(os.Stdout, xxx) 将输出打印到标准输出 (STDOUT)。但是,在某些情况下,您可能更愿意将输出分配给变量。
要实现此目的,请记住 t.Execute 需要一个实现 io.Writer 接口的输入,这一点至关重要。一种合适的选择是利用缓冲区,例如 bytes.Buffer 或 strings.Builder。
使用 bytes.Buffer:
var tpl bytes.Buffer if err := t.Execute(&tpl, data); err != nil { return err } result := tpl.String()
此代码创建bytes.Buffer 并将其地址传递给 t.Execute。如果模板执行成功,输出将存储在缓冲区中,然后可以使用 tpl.String() 将其作为字符串检索。
使用 strings.Builder:
builder := &strings.Builder{} if err := t.Execute(builder, data); err != nil { return err } result := builder.String()
strings.Builder 提供了更专业的替代方案。与之前的方法类似,构建器作为 io.Writer 传递给 t.Execute,并在构建器中收集输出。然后可以使用 builder.String() 方法以字符串形式检索输出。
以上是如何将 Go 模板输出捕获到变量中而不是打印到 STDOUT?的详细内容。更多信息请关注PHP中文网其他相关文章!