到此我们template就大致结束了,当我们在进行程序开发时,我们可以利用该包进行一些模板的渲染,例如Go+Ansible+Nginx的实现即是利用了该包,还有prometheusAlert也是如此。
golang的模板也支持if的条件判断,当前支持最简单的bool类型和字符串类型的判断 {{if .condition}} {{end}} 1. 2. 当.condition为bool类型的时候,则为true表示执行,当.condition为string类型的时候,则非空表示执行。 当然也支持else , else if嵌套 {{if .condition1}} {{else if .contition2}} {{end}}...
{{- if eq .Age 19}} 年龄:{{.Age}} {{else}} 年龄:{{.Age}}+ {{end -}} {{rangevalue := .Like -}} 爱好:{ {value}} {{end -}} 学科:{{rangeindex,value := .Study}}{{ifindex}}, { {end}}{ {value.Name}}{{end}} 学校:{{rangeindex,value := .Study}}{{ifindex}}, ...
{{if or .condition1 .condition2}} {{end}} eq 等于 {{if eq .var1 .var2}} {{end}} ne 不等于 {{if ne .var1 .var2}} {{end}} lt 小于 (less than) {{if lt .var1 .var2}} {{end}} le 小于等于 {{if le .var1 .var2}} {{end}} gt 大于 {{if gt .var1 .var2}} ...
{{if ge .var1 .var2}} {{end}} 5. 循环 golang的template支持range循环来遍历map、slice内的内容,语法为: {{range $i, $v := .slice}} ... {{end}} 在这个range循环内,我们可以通过iv来访问遍历的值。 还有一种遍历方式为: {{range .slice}} ...
在最后的模式中,你可以根据需要多次使用 {{if else}} 部分,也可以添加一个 {{else}} 部分。以下是第二种模式的一个简单示例:package mainimport("os""text/template")funcmain(){ t, err :=template.New("Template").Parse("{{if eq . `filler`}}This is filler...{{else}}It's something ...
在最后的模式中,你可以根据需要多次使用{{if else}}部分,也可以添加一个{{else}}部分。以下是第二种模式的一个简单示例: package main import ( "os" "text/template" ) func main() { t, err := template.New("Template").Parse("{{if eq . `filler`}}This is filler...{{else}}It's somethi...
在golang渲染template的时候,可以接受⼀个interface{}类型的变量,我们在模板⽂件中可以读取变量内的值并渲染到模板⾥。有两个常⽤的传⼊参数的类型。⼀个是struct,在模板内可以读取该struct域的内容来进⾏渲染。还有⼀个是 map[string]interface{},在模板内可以使⽤key来进⾏渲染。我⼀般使...
在上述代码中,我们首先使用template.New()创建一个新的空模板。然后我们使用Parse()将一个字符串解析到这个模板中。在这个字符串中,我们在双括号间加入了一个动作。 因为我们在括号之间放了一个点,这向模板渲染器发出了一个信号,即需要在这里渲染提供的变量。
在template中,提供了if/else的流程判断。 我们看一下doc的定义: {{if pipeline}} T1 {{end}} 如果pipeline的值为空,则不生成输出; 否则,执行T1。空值为 false、0、任何 nil 指针或接口值,以及 长度为零的任何数组、切片、映射或字符串。 点不受影响。