一架梯子,一头程序猿,仰望星空!

golang template模版语法


模板表达式都包括在 {{ 和 }} 之间。

格式: {{ 模板表达式 }}

注释格式: {{/* 注释语法 */}}

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}}