文章目录 (?) [+]
测试用的变量和方法
type struct Blog { Title string } map[string]interface{} type FuncMap map[string]interface{} func add(x, y int) int
变量
{{/* . 代表传入模板的 struct 或 map 变量 */}} <p>{{. Title}}</p> {{/* 定义变量的两种方法 */}} {{$name := "test"}} {{$name := .Title}} <p>{{$name}}</p> {{/* 创建封闭作用域*/}} {{with "hello"}} {{/* 此处的 . 即为 hello */}} <p>{{.}}</p> {{else}} {{/* 此处的 . 为原来的上下文 */}} <p>{{.}}</p> {{end}} {{/* 对于数组,切片,map 使用索引,相当于 array[2][3][4] */}} <p>{{index array 2 3 4}</p>
管道
{{/* 调用 FuncMap 中的函数 */}} <p>{{12.345 | printf "%.2f"}}</p>
判断
{{/* bool 类型判断 */}} {{if .conditon1}} <p>1</p> {{else if .conditon2}} <p>2</p> {{else}} <p>3</p> {{end}} {{/* 与 */}} {{if and .conditon1 .conditon2}} <p>&&</p> {{end}} {{/* 或 */}} {{if or .conditon1 .conditon2}} <p>||</p> {{end}} {{/* 非 */}} {{if not .conditon}} <p>!</p> {{end}} {{/* 等于 */}} {{if eq .conditon1 .conditon2}} <p>==</p> {{end}} {{/* 不等于 */}} {{if ne .conditon1 .conditon2}} <p>!=</p> {{end}} {{/* 小于 */}} {{if lt .conditon1 .conditon2}} <p>less than</p> {{end}} {{/* 小于等于 */}} {{if le .conditon1 .conditon2}} <p>less than equal</p> {{end}} {{/* 大于 */}} {{if gt .conditon1 .conditon2}} <p>greater than</p> {{end}} {{/* 大于等于 */}} {{if ge .conditon1 .conditon2}} <p>greater than or equal to</p> {{end}}
遍历
{{/* 遍历 map 或 slice */}} {{range $i, $v := .slice}} <p>index:{{$i}} value: {{$v}}</p> {{end}} {{range .slice}} <p>value: {{.field}}</p> <p>访问外部变量{{$.Title}}</p> {{end}}
函数
{{/* 调用模板方法 */}} <p>{{add 1 2}}</p>
嵌套
layout
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{.Title}}</title> </head> <body> {{/* 为了子模板获取父模板的变量应在其后加 . */}} {{template "article" .}} </body> </html>
template
{{define "article"}} <article> <header>{{.Header}}</header> <section>{{.Section}}</section> <footer>{{.Footer}}</footer> </article> {{end}}