假设我有
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
如何从html /模板中使用此方法?在我的模板中我需要这样的东西:
{{ .Label() }}
答案 0 :(得分:50)
省略括号,它应该没问题。例如:
package main
import (
"html/template"
"log"
"os"
)
type Person string
func (p Person) Label() string {
return "This is " + string(p)
}
func main() {
tmpl, err := template.New("").Parse(`{{.Label}}`)
if err != nil {
log.Fatalf("Parse: %v", err)
}
tmpl.Execute(os.Stdout, Person("Bob"))
}
根据documentation,如果第二个值为error
,则可以调用任何返回一个值(任何类型)或两个值的方法。在后一种情况下,Execute
将返回该错误,如果它是非零并停止执行模板。
答案 1 :(得分:24)
您甚至可以将参数传递给函数,如下所示
type Person struct {
Name string
}
func (p *Person) Label(param1 string) string {
return "This is " + p.Name + " - " + param1
}
然后在模板中写
{{with person}}
{{ .Label "value1"}}
{{end}}
假设模板中的人是传递给模板的Person类型的变量。