我试图了解如何在文本/模板包中使用调用函数.这是一个例子:
type Human struct {
Name string
}
func (h *Human) Say(str string) string {
return str
}
func main() {
const letter = `
{{.Name}} wants to say {{"blabla" | .Say}}
{{.Name}} wants try again, {{call .Say "blabla"}}.`
var h = &Human{"Tim"}
t := template.Must(template.New("").Parse(letter))
err := t.Execute(os.Stdout, h)
if err != nil {
log.Println("executing template:", err)
}
}
see this code in play.golang.org
我认为该调用调用函数/方法,但事实证明我们可以通过.Method arg1 arg2来完成.那么函数调用是针对什么的?
最佳答案 如果要调用函数值,则需要使用调用.
引用docs(参见功能):
Thus “call .X.Y 1 2” is, in Go notation, dot.X.Y(1, 2) where Y is a
func-valued field, map entry, or the like.
在这个例子中,X可能如下所示:
type X struct {
Y func(a int, b int) int
}