私が持っているとしましょう
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
Html/templateからこのメソッドを使用するにはどうすればよいですか?私のテンプレートには次のようなものが必要です:
{{ .Label() }}
括弧を省略するだけで問題ありません。例:
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 に従って、1つの値(任意の型)または2番目の値がerror
型である場合は2つの値を返すメソッドを呼び出すことができます。後者の場合、Execute
は、nilでない場合にそのエラーを返し、テンプレートの実行を停止します。
次のような関数にパラメータを渡すこともできます
type Person struct {
Name string
}
func (p *Person) Label(param1 string) string {
return "This is " + p.Name + " - " + param1
}
そして、テンプレートに書きます
{{with person}}
{{ .Label "value1"}}
{{end}}
テンプレート内の人物が、テンプレートに渡されるPerson型の変数であると仮定します。