如何保存呈现的模板而不是打印到 os.Stdout?

我是新来的。我一直在搜索文档。在下面的游乐场代码中,它正在屏幕上渲染和打印它。我希望将呈现的文本存储在字符串中,以便我可以从函数中返回它。


package main


import (

    "os"

    "text/template"

)


type Person struct {

    Name string //exported field since it begins with a capital letter

}




func main() {

    t := template.New("sammple") //create a new template with some name

    t, _ = t.Parse("hello {{.Name}}!") //parse some content and generate a template, which is an internal representation


    p := Person{Name:"Mary"} //define an instance with required field

    t.Execute(os.Stdout, p) //merge template ‘t’ with content of ‘p’

}

https://play.golang.org/p/-qIGNSfJwEX


怎么做 ?


九州编程
浏览 66回答 1
1回答

Helenr

只需将其呈现到内存缓冲区中,例如bytes.Buffer(或strings.Builder在 Go 1.10 中添加),您可以通过string调用其Bytes.String()(or Builder.String()) 方法获取其内容:buf := &bytes.Buffer{}if err := t.Execute(buf, p); err != nil {    panic(err)}s := buf.String()fmt.Println(s)这将再次打印(在Go Playground上尝试):hello Mary!但这次是s字符串变量的值。使用strings.Builder(),你只需要改变这一行:buf := &strings.Builder{}在Go Playground试试这个。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go