私が持っているとしましょう
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
html/template からこのメソッドを使用するにはどうすればよいですか? テンプレートには次のようなものが必要です。
{{ .Label() }}
私が持っているとしましょう
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"))
}
ドキュメントによると、(任意の型の) 1 つの値または 2 番目の値が型の場合は 2 つの値を返す任意のメソッドを呼び出すことができますerror
。後者の場合、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 が Template に渡される Person 型の変数であると仮定します。