Go模板提供了一个eq
比较运算符,例如:{{if eq .Var "val" }}
。
在这种情况下,最好的方法是进行不区分大小写的字符串比较,使得上述语句对于变量Var为"val"、"Val"或"VAL"都成立。
Go模板提供了一个eq
比较运算符,例如:{{if eq .Var "val" }}
。
在这种情况下,最好的方法是进行不区分大小写的字符串比较,使得上述语句对于变量Var为"val"、"Val"或"VAL"都成立。
template.Funcs()
来注册自定义函数,以便在模板中使用。strings.EqualFold()
函数,可以执行字符串的不区分大小写比较。因此,只需注册该函数,即可从模板中调用它:t := template.Must(template.New("").Funcs(template.FuncMap{
"MyEq": strings.EqualFold,
}).Parse(`"{{.}}" {{if MyEq . "val"}}matches{{else}}doesn't match{{end}} "val".`))
t.Execute(os.Stdout, "Val")
fmt.Println()
t.Execute(os.Stdout, "NotVal")
结果:
"Val" matches "val".
"NotVal" doesn't match "val".
在Go Playground上试试。