Capturar el resultado de una plantilla en Go
Dentro de una plantilla de Go, capturar el resultado de una subplantilla o asignarla directamente a una variable es no es compatible de forma predeterminada. Sin embargo, esto se puede lograr registrando una función personalizada y usando un búfer de bytes para recibir el resultado de la plantilla.
Registro de función personalizada
Para capturar el resultado de la plantilla, regístrese una función con Template.Funcs() que toma el nombre de la plantilla como argumento y devuelve la salida de la plantilla como una cadena:
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
Ejecución de plantilla y captura de resultados
Ejecute la subplantilla denominada 'mi-plantilla' usando Template.ExecuteTemplate() y asígnela a una variable:
{{$var := execTempl "my-template"}}
Salida Recuperación
Recupera el resultado capturado y úsalo según sea necesario:
See result: {{$var}}
Ejemplo completo
var t *template.Template func main() { t = template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl)) if err := t.Execute(os.Stdout, nil); err != nil { panic(err) } } const tmpl = ` {{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
Salida:
See result: my-template content
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3