template not golang equal conditions go go-templates

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.