Go Template
go 语言 Template 总结
go 语言中的 template 使用{{ }}来作为一个标识符,可以在其中插入相应的 template 支持的代码块。template 是一个模板,他所以来的数据从外部传进来。
形如:
|
tpl 就是我们的一个模板类,其中已经读取了我们存在本地的文件,Execute 方法传入了数据。
比如{{.text}} 那么就回去寻找传进来的这个 data,是不是含有 text 这个字段。map 就是对应的 key,struct 就是对应的成员。如果没有这个字段会出现 <no value>
几个常用的关键字
“.”
点代表着一个作用域,后面接字段名获取到相应的值。 {{.text}}就是取text这个字段的值
if 关键字
{{if .data.text0}} {{end}}
if 可以判断 bool 和 string,可以判断出是否有此字段和是否是空值
range 关键字
{{range .data.buttons}} {{.text}} {{end}}
这个含义就是遍历 data 中的 buttons 数组,然后取道每个 button 中的 text 值
想要有 index 值,可以这样:
{{ range $index,$element := .array0 }} {{$index}} {{ end }}
这里还有一些默认的函数,如 (len .data.buttons)这个可以获得这个数组的长度
一些用于比较的关键字
|
但是使用起来很诡异,如下
{{if eq .extension.T “banner”}}{{end}}
比较符号要放到前面~~
插入函数
虽然 go 的 template 支持了一些基本函数,但是不全,我们可以自定义任意的函数来使用。
|
这样就注册了一个函数,只要写一个函数叫做 subtract 就好了
|
模板中这样使用 {{ subtract 2 1}} 这个值就是1
读取多个模板
|
读取 cfg/xml 下所有 .tpl 结尾的模板文件