だが、私は、HTML /テンプレートからこのメソッドを使用するにはどうすればよい呼び出し方法
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
があるとしましょうか?私はテンプレートのようなものが必要になります:
{{ .Label() }}
だが、私は、HTML /テンプレートからこのメソッドを使用するにはどうすればよい呼び出し方法
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
があるとしましょうか?私はテンプレートのようなものが必要になります:
{{ .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によれば、2番目のいずれかのタイプerror
である場合(任意の型の)一つの値又は2つの値を返す任意のメソッドを呼び出すことができます。後者の場合、Execute
は、それがnilでなければエラーを返し、テンプレートの実行を停止します。
あなたも
type Person struct {
Name string
}
func (p *Person) Label(param1 string) string {
return "This is " + p.Name + " - " + param1
}
をたどり、その後、テンプレートにテンプレート者はテンプレートに渡されたPerson型の変数であると仮定すると
{{with person}}
{{ .Label "value1"}}
{{end}}
を書くように機能するためにパラメータを渡すことができます。
ありがとうございます!私はそれを試みましたが、私の方法の受信者は、人の代わりに人でした。だからそれはポインタの受信機では動作しません、それはキャッチするようです。 – Blacksad
これはポインタ受信機でも動作します。しかし、 'func(p * Person)Label()'を持つときに '* Person'型の値だけがLabel()メソッドを持つことに注意してください。あなたが定義していないので、 'Person'でそのメソッドを呼び出すことはできません。 – tux21b
また、{{&。 }}のアドレスを取得します。私のテンプレートに? – Blacksad