背景: go语言可以采用tmpl模板来生成许多代码 , 可以加速开发效率
text/template 和 html/template 是 Golang 标准库提供的两个数据驱动的模板库,通常被用于文本生成和 HTML 生成。本文将介绍 Golang 模板库的语法和使用。
简单的例子
// 构建模板
tmpl, err := template.New("").Parse("你好,{
{ . }}")
if err != nil {
panic(err)
}
// 输出文本, 最终输出 "你好,Weicong"
err = tmpl.Execute(os.Stdout, "Weicong")
if err != nil {
panic(err)
}
上图是一个简单tmpl 例子 采用了 { { . }} 作为变量占位符
文本和空白
在模板文本中,一切动态的内容和判断代码块均使用 {
{
和 }}
包括起来,比如上述的示例 {
{ . }}
,在 {
{
和 }}
之外的文本均会被原封不动地拷贝到输出中。
为了方便格式化模板源代码,还额外提供了 {
{-
和 -}}
两种语法,可以将代码块前或代码块后的空白字符均移除。空白字符包括空格符、换行符、回车符、水平制表符。
{
{ 12 }} < {
{ 34 }} {
{/* => 12 < 34 */}}
{
{ 12 }} < {
{- 34 }} {
{/* => 12 <34 */}}
{
{ 12 -}} < {
{ 34 }} {
{/* => 12< 34 */}}
{
{ 12 -}} < {
{- 34 }} {
{/* => 12<34 */}}
注释
模板文本中可以使用 {
{/* xxx */}}
记录相关注释,注释不会被最终生成到文本中。但是需要注意的,注释前后的空格和换行均会保留,如果需要去除也可以使用 {
{-
和 -}}
。
传入复杂数据结构
前面的例子中 我们使用 {
{ . }}
输入了一个变量,这里的 .
表示当前作用域的对象值。
传入对象也可以传入一个更复杂的结构体。
type Params struct {
UserName string
SiteName string
}
tmpl, _ := template.New("").Parse("你好,这里是{
{ .UserName }}的{
{ .SiteName }}。")
_