Call a method from a Go template
go, go-templates
Solution
Just omit the parentheses and it should be fine. Example:
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"))
}
According to the documentation, you can call any method which returns one value (of any type) or two values if the second one is of type `error`. In the later case, `Execute` will return that error if it is non-nil and stop the execution of the template.
Problem
Let's say I have ``` type Person struct { Name string } func (p *Person) Label() string { return "This is " + p.Name } ``` How can I use this method from a html/template ? I would need something like this in my template: ``` {{ .Label() }} ```