title: golang解析html模板到字符串
date: 2015-01-30 00:05:22
tags: golang
categories:
说来自己对golang的掌握也就半壶水,不过我向来认为学习就是一个不断踩坑的过程.只有在实践中才能不断的取得进步.最近在独力编写golang版本的影梭管理面板,其中有个需求就是给用户发送激活邮件,本着尽善尽美的原则,计划提供可编辑的html邮件模板.那么,问题就来了.使用html/template
包对html模板进行解析,但是Execute
函数是输出到io.Writer
,而我需要的是把模板解析结果保存到string
类型的变量中,以便直接传送给下一步负责发送邮件的函数使用.
在网络上查阅资料后得知实现上述要求方法非常简单,只需要设置一个bytes.Buffer
,Execute
的时候把数据写入到这个缓存器当中,再调用String
方法转换成字符串即可.
Don’t talk,show me code!So,there is a sample:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| 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)
}
|
Sweet dream,Frank.
参考文献:
[1] Package template
[2] Package bytes #Buffer.string
[3] Make template.Execute write output to a string