not - golang template range
Llamar a un método desde una plantilla Go (2)
Incluso puede pasar parámetros para funcionar de la siguiente manera
type Person struct {
Name string
}
func (p *Person) Label(param1 string) string {
return "This is " + p.Name + " - " + param1
}
Y luego en la plantilla escriba
{{with person}}
{{ .Label "value1"}}
{{end}}
Suponiendo que la persona en la plantilla es una variable de tipo Persona pasada a Plantilla.
Digamos que tengo
type Person struct {
Name string
}
func (p *Person) Label() string {
return "This is " + p.Name
}
¿Cómo puedo usar este método desde un html / template? Necesitaría algo como esto en mi plantilla:
{{ .Label() }}
Solo omita los paréntesis y debería estar bien. Ejemplo:
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"))
}
De acuerdo con la documentation , puede llamar a cualquier método que devuelva un valor (de cualquier tipo) o dos valores, si el segundo es de tipo error
. En el caso posterior, Execute
devolverá ese error si no es nulo y detendrá la ejecución de la plantilla.