Al crear variables globales en el paquete html/template de Go, comprender las limitaciones del alcance es crucial. Según la documentación del paquete, las variables definidas en una plantilla tienen un alcance limitado que se extiende hasta el final de la estructura de control (por ejemplo, si, con, rango) en la que se declaran.
Considere el siguiente código HTML/plantilla:
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
Este código tiene como objetivo mostrar el ID de usuario actual dentro del bloque if y 0 fuera del bloque. Sin embargo, el resultado muestra 0 en ambos lugares debido al alcance limitado de $currentUserId.
Go 1.11 introdujo soporte para modificar valores de variables de plantilla. Para inicializar una variable, use :=, como en:
{{$currentUserId := 0}}
Para actualizar su valor, use =, como en:
{{$currentUserId = .UserData.UserId}}
Al modificar una variable definida fuera del bloque if, se puede acceder al cambio tanto dentro como fuera el bloque.
Si modificar las variables globales no es adecuado, considere estas alternativas:
Al aprovechar estas soluciones, puede crear y modificar variables globales en el paquete html/template de Go, lo que garantiza un alcance de variable adecuado y logra la funcionalidad deseada en su plantillas.
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