golang解析使用模板到字符串
来自己对golang的掌握也就半壶水,不过我向来认为学习就是一个不断踩坑的过程.只有在实践中才能不断的取得进步.最近在独力编写golang版本的影梭管理面板,其中有个需求就是给用户发送激活邮件,本着尽善尽美的原则,计划提供可编辑的html邮件模板.那么,问题就来了.使用html/template
包对html模板进行解析,但是Execute
函数是输出到io.Writer
,而我需要的是把模板解析结果保存到string
类型的变量中,以便直接传送给下一步负责发送邮件的函数使用.
在网络上查阅资料后得知实现上述要求方法非常简单,只需要设置一个bytes.Buffer
,Execute
的时候把数据写入到这个缓存器当中,再调用String
方法转换成字符串即可.
package main import ( "html/template" "bytes" "fmt" ) type Mail struct { UserName string SiteName string ActiveLink string } func main() { var doc bytes.Buffer var templateString = "{{.UserName}}你好,您在{{.SiteName}}注册了帐号,请点<a href=\"{{.ActiveLink}}\">击这里激活!</a>" t := template.New("fieldname example") t, _ = t.Parse(templateString) p := Mail{UserName: "Frank",SiteName: "SSP", ActiveLink: "http://xizhimen.com/active/9a32f2"} t.Execute(&doc,p) html := doc.String() fmt.Println(html) }