Использование Go Template var внутри `{{template}}` - PullRequest
0 голосов
/ 09 ноября 2018

В Go мы можем легко создать переменную с помощью

{{- if .Bool.Var -}}
  {{ $MyVar := "val" }}
{{- end -}}

Мы даже можем создавать общие фрагменты достаточно легко

{{- define "val" -}}
  <p>Some shared template data</p>
{{- end -}}

Мой вопрос : как нам использовать $MyVar в качестве текстового значения для {{template}}, чтобы мы могли сделать что-то вроде {{template $MyVar}}, не вызывая ошибка или это невозможно?

1 Ответ

0 голосов
/ 09 ноября 2018

На чистом языке Go text/template (который не Go как таковой , но что-то другое, что может быть реализовано в Go), это невозможно; {{template}} вызов принимает буквальное имя строки.

Одним из наиболее известных пользователей этого языка является менеджер развертывания Kubernetes Helm . Это включает в себя несколько расширений языка шаблонов. Одной из них является include шаблонная функция , которая может принимать любое значение в качестве имени шаблона и генерирует строку вместо немедленного вывода содержимого шаблона (вы можете включить его в конвейер, который вы не может с template). В частности, в файле YAML вы можете

{{ include $MyVar }}
...