Диапазон по фрагменту строки в шаблоне Голанга - PullRequest
0 голосов
/ 12 января 2019

У меня есть структура, которая содержит фрагмент типа строки, как показано ниже.

 type Data struct {
      DataFields []string
 }

В моем файле шаблона html я хотел бы расположить фрагмент строки. Однако отдельные поля - это просто строки без какого-либо имени структуры. Как зациклить фрагмент, содержащий простой тип, такой как string, int и т. Д.

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Или назначьте его переменной, аналогично обычному предложению диапазона Go:

 {{range $element := .DataFields}} {{$element}} {{end}}

Запустите его на детской площадке

Из документов для текста / шаблона (служит интерфейсом документов для HTML / шаблона):

{{range pipeline}} T1 {{end}}
    The value of the pipeline must be an array, slice, map, or channel.
    If the value of the pipeline has length zero, nothing is output;
    otherwise, <b>dot is set to the successive elements of the array,
    slice, or map</b> and T1 is executed. If the value is a map and the
    keys are of basic type with a defined order ("comparable"), the
    elements will be visited in sorted key order.

...

Конвейер внутри действия может инициализировать переменную для захвата результата. Инициализация имеет синтаксис

$variable := pipeline

...

Если действие «диапазон» инициализирует переменную, переменная устанавливается на последовательные элементы итерации. Также «диапазон» может объявлять две переменные, разделенные запятой:

range $index, $element := pipeline

В этом случае $ index и $ element устанавливаются в последовательные значения индекса массива / слайса или ключа и элемента карты соответственно. Обратите внимание, что если есть только одна переменная, ей присваивается элемент; это противоположно соглашению в предложениях диапазона Go.

(выделены мной жирным шрифтом)

0 голосов
/ 12 января 2019

Используйте . для ссылки на простые значения, такие как строка, int и т. Д.

 {{range .DataFields}}{{.}}{{end}}

Запустите его на игровой площадке .

Вы также можете назначить переменную шаблона, как в {{range $v := .DataFields}}{{$v}}{{end}}, но это дополнительная работа. Охватите ..

...