模板表达式都包括在 {{ 和 }} 之间。
格式: {{ 模板表达式 }}
注释格式: {{/* 注释语法 */}}
1.删除空格处理
有时候我们输出表达式结果的时候,在表达式结果左右两边都会携带一些空格。
下面是删除表达式结果左右两边空格的语法:
- 在左边增加减号和空格,表示删除左边空格: {{- 模板表达式 }}
- 在右边增加空格和减号,表示删除右边空格: {{ 模板表达式 -}}
- 删除表达式左右两边空格的写法: {{- 模板表达式 -}}
例子:
"{{23 -}} < {{- 45}}"
输出:
"23<45"
23和45之间的空格都被删除了
2.模版参数
在模版中主要通过 点( . ) 引用模版参数。
因为在渲染模版的时候只能传入一个参数,所以点( . ) 正好可以代表模版参数的引用。
模版参数支持数字、布尔值、字符串、map、struct、数组类型。
下面分别介绍传入不同类型参数,模版代码如何引用参数。
2.1. int/bool/string类型参数
模版参数为int/bool/string类型,可以直接用点( . ) 引用即可。
{{.}}
例子:
//渲染demo模版,传入字符串参数 "欢迎访问tizi365.com"
t.ExecuteTemplate(os.Stdout, "demo", "欢迎访问tizi365.com")
{{.}} 模版代码,输出:
欢迎访问tizi365.com
2.2. map/struct类型参数
如果要传入多个模版参数,一般都使用map或者struct类型。
引用语法格式:
{{.字段名}}
嵌套的struct或者map类型引用语法格式:
{{.字段名1.字段名2}}
使用 点( . ) 连接多个字段名,就可以访问多层嵌套的struct/map类型数据.
例子:
//定义struct模版参数
type User struct {
Name string
}
type Order struct {
Id int
Title string
Customer User //嵌套字段
}
//初始化模版参数
food := Order{
Id: 10,
Title: "柠檬",
Customer: User{
Name: "李大春"
}
}
//渲染demo模版, 模版参数为food
t.ExecuteTemplate(os.Stdout, "demo", food)
模版代码:
商品名: {{.Title}}
用户名: {{.Customer.Name}}
输出结果:
商品名: 柠檬
用户名: 李大春
提示:如果模板参数传入数组,则需要循环语句处理输出,后面的章节会介绍range循环语句用法。
3.模版变量
在模版中也可以自定义变量, 类似golang使用:=符号定义变量,语法如下:
$变量名 := 数据
变量名需要以$美元符号开头。
例子:
定义变量
$title := "标题"
为变量赋值, 第二次为变量赋值,不需要冒号:
$title = "新标题"
引用变量
{{$title}}