"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo capturar y asignar la salida de la plantilla Go a una variable?

¿Cómo capturar y asignar la salida de la plantilla Go a una variable?

Publicado el 2024-12-22
Navegar:967

How to Capture and Assign Go Template Output to a Variable?

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
Último tutorial Más>

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