模板语法一
源代码路径:chapter03\test_syntax_tpl.go
模板路径:template\chapter03\test.html
一、统一使用了 { { 和 } } 作为左右标签,
二、上下文
- . 访问当前位置的上下文
- $ 引用当前模板根级的上下文
- $. 引用模板中的根级上下文
三、支持go语言的符号,这里只是符号的支持
1.字符串:{ { “zhiliao ” } }
2.原始字符串:{ { `zhiliao` } } 不会转义
3.字节类型:{ { ’ a’ } } -->97 ascll码对应表: http://ascii.911cha.com/
4.nil类型:{ { print nil } } { {nil } }只有nil会报错:nil is not a command
四、定义变量
1.定义:
{{$username := "xxxx"}}
2.使用:
{{$username }}
注意:只能在当前模板中使用
五、pipline
1.可以是上下文的变量输出,也可以是函数通过管道传递的返回值
e.g.
- { {.Name} } 是上下文的变量输出,是个pipline
- { { “hallen” | len } } 是函数通过管道传递的返回值,是个pipline
六、if
1.if…else
{{if .name}} 有姓名 {{else}} 没有姓名 {{end}}
2.if嵌套
成年人而且带了身份证的准进:
{{if .A}}
{{if .C }}
可以进
{{else}}
不能进
{{end}}
{{else}}
未成年不能进
{{end}}
七、range
第一种: {{range $v := .arr_struct}} {{$v.Name}} {{$v.Age}} {{$v.Gender}} {{end}} 下面的也可以 {{range $v := .arr}} {{/*{{$v}}*/}} {{.}} {{end}} 第二种: {{ range .arr_struct }} {{.Name }} {{.Age}} {{ $.total}} // 使用 $. 引用模板中的根级上下文 {{end}}
range也支持else,当长度为0时,执行else
{{range .total}} {{.}} {{else}} {{ 0 }} {{/* 当 .total 为空 或者 长度为 0 时会执行这里 */}} {{end}}