Ao criar variáveis globais no pacote html/template do Go, compreender as limitações do escopo é crucial. De acordo com a documentação do pacote, as variáveis definidas em um modelo têm um escopo limitado que se estende até o final da estrutura de controle (por exemplo, if, with, range) em que são declaradas.
Considere o seguinte código HTML/modelo:
{{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 tem como objetivo exibir o ID do usuário atual dentro do bloco if e 0 fora do bloco. No entanto, o resultado mostra 0 em ambos os lugares devido ao escopo limitado de $currentUserId.
Go 1.11 introduziu suporte para modificar valores de variáveis de modelo. Para inicializar uma variável, use :=, como em:
{{$currentUserId := 0}}
Para atualizar seu valor, use =, como em:
{{$currentUserId = .UserData.UserId}}
Ao modificar uma variável definida fora do bloco if, a mudança pode ser acessada tanto dentro quanto fora do bloco block.
Se modificar variáveis globais não for adequado, considere estas alternativas:
Ao aproveitar essas soluções, você pode criar e modificar variáveis globais no pacote html/template do Go, garantindo o escopo apropriado da variável e alcançando a funcionalidade desejada em seu modelos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3