/ 2019-06-26
更多内容请关注微信公众号:oldboygo
模板标签
模板标签用"{{"和"}}"括起来。
模板注释
{{/* a comment */}}
使用“{{/”和“/}}”来包含注释内容。
变量
{{.}}
表示所有 (此标签输出当前对象的值) 。
{{.Oldboy}}
表示输出struct对象中字段或方法名称为“Oldboy”的值。
当“Oldboy”是匿名字段时,可以访问其内部字段或方法,比如“Age”:{{.Oldboy.Age}} ,如果“Age”是一个方法并返回一个struct对象,同样也可以访问其字段或方法:{{.Oldboy.Age.Field1}} 。
{{.Method "参数1" "参数2"}}
调用方法“Method”,将后面的参数值依次传递给此方法,并输出其返回值。
{{$oldboy}}
此标签用于输出在模板中定义的名称为“oldboy”的变量。当$oldboy本身是一个struct对象时,可访问其字段:{{$oldboy.Field}} 。
在模板中定义变量:变量名称用字母和数字组成,并带上“$”前缀,采用符号“:=”进行赋值。
比如:{{$user := "oldboy"}} 或 {{$pwd := 123456}}
函数
用法1:
{{FuncName}}
此标签将调用名称为“FuncName”的模板函数(等同于执行“FuncName()”,不传递任何参数)并输出其返回值。
用法2:
{{FuncName "参数1" "参数2"}}
此标签将调用“FuncName("参数1", "参数2")”,并输出其返回值。
用法3:
{{.Oldboy|FuncName}}
此标签将调用名称为“FuncName”的模板函数(等同于执行“FuncName(Oldboy)”,将竖线“|”左边的“.Oldboy”变量值作为函数参数传送)并输出其返回值。
条件判断
用法1:
{{if 布尔表达式 }} 在布尔表达式为 true 时执行 {{end}}
标签结构:{{if …}} … {{end}} 。
用法2:
{{if 布尔表达式}} 在布尔表达式为 true 时执行 {{else}} 在布尔表达式为 false 时执行 {{end}}
标签结构:{{if …}} … {{else}} … {{end}} 。
用法3:
{{if 布尔表达式1 }} 在布尔表达式1为 true 时执行 {{else if 布尔表达式2 }} 在布尔表达式2为 true 时执行 {{end}}
标签结构:{{if …}} … {{else if …}} … {{end}} 。
遍历
用法1:
{{range $k, $v := .Var}} {{$k}} => {{$v}} {{end}}
range…end结构内部如要使用外部的变量,比如.Var2,需要这样写:$.Var2(即:在外部变量名称前加符号“$”即可,单独的“$”意义等同于global)。
用法2:
{{range .Var}} {{.}} {{end}}
这种方式通过“.”来访问对应的value 。
用法3:
{{ range . }} 有可遍历的值时执行 {{else}} 无可遍历的值时执行 {{end}}
当没有可遍历的值时,则会执行else分支的部分。
嵌入子模板
用法1:
{{template "name"}}
嵌入名称为“name”的子模板。使用前,请确保已经用“{{define "name"}}子模板内容{{end}}”定义好了子模板内容。
用法2:
{{template "name" arg }}
将参数传给子模板,arg 赋给子模板中的“.”(即“{{.}}”)
子模板嵌套
{{define "T1"}}ONE{{end}}
{{define "T2"}}TWO{{end}}
{{define "T3"}}{{template "T1"}} {{template "T2"}}{{end}}
{{template "T3"}}
输出:
ONE TWO
定义局部变量
用法1:
{{with arg}} 标签内部 {{end}}
arg 的值将赋给该标签内部的“.”。(注:这里的“内部”一词是指被{{with arg}}…{{end}}包围起来的部分)
用法2:
(6)