【发布时间】:2020-10-10 18:57:38
【问题描述】:
我在 Golang 中使用 templates,在某些时候我会使用以下代码:
t.Execute(os.Stdout, xxx);
上面的这段代码将模板输出到屏幕上(因为os.Stdout),但我希望它被分配给一个变量,比如
var temp string;
e := t.Execute(temp, xxx);
当然,这段代码是行不通的。那么我该怎么做呢?
【问题讨论】:
标签: go
我在 Golang 中使用 templates,在某些时候我会使用以下代码:
t.Execute(os.Stdout, xxx);
上面的这段代码将模板输出到屏幕上(因为os.Stdout),但我希望它被分配给一个变量,比如
var temp string;
e := t.Execute(temp, xxx);
当然,这段代码是行不通的。那么我该怎么做呢?
【问题讨论】:
标签: go
t.Execute 需要一个实现io.Writer 接口的类型。一种选择是使用缓冲区:
var tpl bytes.Buffer
if err := t.Execute(&tpl, data); err != nil {
return err
}
result := tpl.String()
另一个更专业的替代方案是strings.Builder,在 cmets 中提到:
builder := &strings.Builder{}
if err := t.Execute(builder, data); err != nil {
return err
}
result := builder.String()
【讨论】: