猿问

如何使用文本/模板的预定义“调用”功能?

我试图了解如何call在text/template包中使用函数。这是示例:


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)

    }


}

我认为call调用函数/方法,但事实证明我们可以通过.Method arg1 arg2. 那么函数的call目的是什么?


HUWWW
浏览 174回答 2
2回答

慕斯王

call如果要调用函数值,则需要使用。引用文档(参见函数下):因此,“调用 .XY 1 2”在 Go 符号中是 dot.XY(1, 2),其中 Y 是一个函数值字段、映射条目等。在这个例子中X可能是这样的:type X struct {    Y func(a int, b int) int}
随时随地看视频慕课网APP

相关分类

Go
我要回答