如何使用带有多个比较参数的“或”运算符或我可以找到一些示例的任何想法? official doc上似乎没有。
if (x == "value" && y == "other") || (x != "a") && (y == "b"){
print("hello")
}
答案 0 :(得分:2)
官方文档do对or
,and
,eq
和neq
的解释适用于模板。您可以阅读有关模板函数here.
要记住的是模板中提供的函数是前缀表示法(Polish Notation)。例如,不等于运算符ne 1 2
将评估为true,因为它的两个参数1和2不相等。这是一个模板的example,它使用您在模板函数前缀中重写的给定表达式。
package main
import (
"os"
"text/template"
)
type Values struct {
Title, X, Y string
}
func main() {
// Parenthesis are used to illustrate order of operation but could be omitted
const given_template = `
{{ if or (and (eq .X "value") (eq .Y "other")) (and (ne .X "a") (eq .Y "b")) }}
print("hello, {{.Title}}")
{{end}}`
values := []Values{
Values{Title: "first", X: "value", Y: "other"},
Values{Title: "second", X: "not a", Y: "b"},
Values{Title: "neither", X: "Hello", Y: "Gopher"},
}
t := template.Must(template.New("example").Parse(given_template))
for _, value := range values {
err := t.Execute(os.Stdout, &value)
if err != nil {
panic(err)
}
}
}