Go模板提供了{{if eq .Var "val" }}
比较运算符,例如{{1}}。
在这种情况下,进行不区分大小写的字符串比较的最佳方法是什么?因此,对于Var来说,上述情况将是“val”,“Val”或“VAL”。
答案 0 :(得分:3)
您只需创建另一个lowercase变量s1 := strings.ToLower(s)
,并将其与模板与小写字符串进行比较。
答案 1 :(得分:2)
您可以使用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上尝试。