Po prostu pomiń nawiasy i powinno być dobrze. Przykład:
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"))
}
Według documentation można wywołać żadnego sposobu, który zwraca jedną wartość (dowolnego typu) lub dwu wartości, gdy druga jest typu error
. W późniejszym przypadku Execute
zwróci ten błąd, jeśli nie będzie zerowy i zatrzyma wykonywanie szablonu.
Dzięki, to działa! Próbowałem, ale odbiorcą mojej metody była * Osoba zamiast Osoby. Więc nie działa z odbiornikami wskaźnikowymi, które wydają się być haczykiem. – Blacksad
Działa również z odbiornikami wskaźnika. Należy jednak pamiętać, że jeśli masz etykietę 'func (p * Person)()' tylko wartości typu '* Person' będą miały metodę Label(). Nie możesz wywołać tej metody na "Osobie", ponieważ jej nie zdefiniowałeś. – tux21b
Czy mogę napisać {{&. }}, aby uzyskać adres. w moim szablonie? – Blacksad