if
这些存在吗? 1.1.2不存在! 1.3存在.
eq Returns the boolean truth of arg1 == arg2 ne Returns the boolean truth of arg1 != arg2 lt Returns the boolean truth of arg1 < arg2 le Returns the boolean truth of arg1 <= arg2 gt Returns the boolean truth of arg1 > arg2 ge Returns the boolean truth of arg1 >= arg2
{{if a b}}
do something
{{end}}
range
知道用$.来获取global
用法1: {{range $k, $v := .Var}} {{$k}} => {{$v}} {{end}} range...end结构内部如要使用外部的变量,比如.Var2,需要这样写:$.Var2 (即:在外部变量名称前加符号“$”即可,单独的“$”意义等同于global) 用法2: {{range .Var}} {{.}} {{end}} 用法3: {{range pipeline}} T1 {{else}} T0 {{end}} 当没有可遍历的值时,将执行else部分。
{{range $i := N 1 10}}
http://stackoverflow.com/questions/22713500/iterating-a-range-of-integers-in-go-templates
func N(start, end int) (stream chan int) { stream = make(chan int) go func() { for i := start; i <= end; i++ { stream <- i } close(stream) }() return } templ := `{{range $i := N 1 10}} <div>{{$i}}</div> {{end}}` t := template.New("foo").Funcs(template.FuncMap{"N": N})
and 是一个方法
{{if and 变量1 变量2}} {{end}}
自定义方法传参
{{ func param1 param2 }} 或 {{ (func param1 param2) }}
pipeline/函数
用法1: {{FuncName1}} 此标签将调用名称为“FuncName1”的模板函数(等同于执行“FuncName1()”,不传递任何参数)并输出其返回值。
用法2: {{FuncName1 "参数值1" "参数值2"}} 此标签将调用“FuncName1("参数值1", "参数值2")”,并输出其返回值
用法3: {{.Admpub|FuncName1}} 此标签将调用名称为“FuncName1”的模板函数(等同于执行“FuncName1(this.Admpub)”,将竖线“|”左边的“.Admpub”变量值作为函数参数传送)并输出其返回值。
pipeline 嵌套
{{add $.pageInfo.CurPage | urlConcat $.url "page" }} 前面add 的值作为 urlConcat的最后一个参数, 也可以这样:
{{urlConcat $.url "page" (add $.pageInfo.CurPage)}} 用括号来分隔