前端之家收集整理的这篇文章主要介绍了
golang模板语法简明教程,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
转载地址:http://www.admpub.com/blog/post-221.html
【模板标签】
【注释】
{{/* a comment */}}
【变量】
{{.}}
{{.Admpub}}
表示输出Struct对象中字段或方法名称为“Admpub”的值。
当“Admpub”是匿名字段时,可以访问其内部字段或方法,比如“Com”:{{.Admpub.Com}} ,
如果“Com”是一个方法并返回一个Struct对象,同样也可以访问其字段或方法:{{.Admpub.Com.Field1}}
@H_
502_75@
{{.Method1 "参数值1" "参数值2"}}
{{$admpub}}
此标签用于输出在模板中定义的名称为“admpub”的变量。当$admpub本身是一个Struct对象时,可访问其字段:{{$admpub.Field1}}
在模板中定义变量:变量名称用字母和数字组成,并带上“$”前缀,采用符号“:=”进行赋值。
比如:{{$x := "OK"}} 或 {{$x := pipeline}}
{{FuncName1}}
此标签将调用名称为“FuncName1”的模板函数(等同于执行“FuncName1()”,不传递任何参数)并输出其返回值。
{{FuncName1 "参数值1" "参数值2"}}
此标签将调用“FuncName1("参数值1","参数值2")”,并输出其返回值
{{.Admpub|FuncName1}}
此标签将调用名称为“FuncName1”的模板函数(等同于执行“FuncName1(this.Admpub)”,将竖线“|”左边的“.Admpub”变量值作为函数参数传送)并输出其返回值。
{{if pipeline}} T1 {{end}}
标签结构:{{if ...}} ... {{end}}
{{if pipeline}} T1 {{else}} T0 {{end}}
标签结构:{{if ...}} ... {{else}} ... {{end}}
{{if pipeline}} T1 {{else if pipeline}} T0 {{end}}
标签结构:{{if ...}} ... {{else if ...}} ... {{end}}
其中if后面可以是一个条件表达式(包括管道函数表达式。pipeline即管道),也可以是一个字符窜变量或布尔值变量。当为字符窜变量时,如为空字符串则判断为false,否则判断为true。
【遍历】
{{range $k,$v := .Var}} {{$k}} => {{$v}} {{end}}
range...end结构内部如要使用外部的变量,比如.Var2,需要这样写:$.Var2
(即:在外部变量名称前加符号“$”即可,单独的“$”意义等同于global)
{{range .Var}} {{.}} {{end}}
{{range pipeline}} T1 {{else}} T0 {{end}}
当没有可遍历的值时,将执行else部分。
【嵌入子模板】
@H_
403_243@
用法1:
{{template "name"}}
嵌入名称为“name”的子模板。使用前,请确保已经用“{{define "name"}}子模板内容{{end}}”定义好了子模板内容。
{{template "name" pipeline}}
将管道的值赋给子模板中的“.”(即“{{.}}”)
【子模板嵌套】
{{define "T1"}}ONE{{end}}
{{define "T2"}}TWO{{end}}
{{define "T3"}}{{template "T1"}} {{template "T2"}}{{end}}
{{template "T3"}}
ONE TWO
【定义局部变量】
{{with pipeline}} T1 {{end}}
管道的值将赋给该标签内部的“.”。(注:这里的“内部”一词是指被{{with pipeline}}...{{end}}包围起来的部分,即T1所在位置)
{{with pipeline}} T1 {{else}} T0 {{end}}
如果管道的值为空,“.”不受影响并且执行T0,否则,将管道的值赋给“.”并且执行T1。
说明:{{end}}标签是if、with、range的结束标签。
@H_
404_363@
【例子:输出字符窜】