【问题标题】:Get output of template to a variable instead to STDOUT [duplicate]将模板输出到变量而不是STDOUT [重复]
【发布时间】:2020-10-10 18:57:38
【问题描述】:

我在 Golang 中使用 templates,在某些时候我会使用以下代码:

t.Execute(os.Stdout, xxx);

上面的这段代码将模板输出到屏幕上(因为os.Stdout),但我希望它被分配给一个变量,比如

var temp string;
e := t.Execute(temp, xxx);

当然,这段代码是行不通的。那么我该怎么做呢?

【问题讨论】:

标签: go


【解决方案1】:

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2013-09-09
    相关资源
    最近更新 更多