Passando Múltiplos Argumentos Para Sub-Templates Em Golang

Você já quis passar múltiplos argumentos para um sub-template em go? Se você pesquisar no Google, ficará convencido de que isso não é possível. Mas acompanhe comigo.

Em templates go, você pode passar um único “argumento” (pipeline em golang) para um bloco de “sub-template” definido. Mas, criando uma função auxiliar simples, você pode passar quantos argumentos quiser. Simplesmente adicione esta função ao seu FuncMap:

func(els ...any) []any {
    return els
}

E você será capaz de criar construções como:

{{ template "MyTemplate" (arr "first" 123 .Some.Value) }}
{{ template "MyTemplate" (arr "second" 456 .Other.Value) }}

{{ define "MyTemplate" }}
  {{ $strArg := index . 0 }}
  {{ $intArg := index . 1 }}
  {{ $valArg := index . 2 }}

  Este é o meu parâmetro str {{ $strArg }}.
  ...
{{ end }}

Eu chamei a minha função auxiliar de arr, mas você pode chamá-la como quiser.

Aproveite!

_

= M =

comentários

comments powered by Disqus