Go шаблон, объединяющий словарь с возможно пустым исходным словарем - PullRequest
0 голосов
/ 18 июня 2020

В шаблоне go я объединяю метки уровня проекта и уровня приложения с

{{ range $k, $v := (merge $project.labels $app.labels) }}
  # Do something with $k and $v.
{{end}}

Оба $project.labels и $app.labels - словари, созданные из файла yaml. Теперь я хочу сделать app.labels как необязательное поле, это можно сделать с помощью некоторого дополнительного оператора with, но мне интересно, есть ли элегантный способ сделать это.

В настоящее время, если $app.label не определено в файле yaml, я получу:

wrong type for value; expected map[string]interface {}; got interface {}

1 Ответ

0 голосов
/ 18 июня 2020

Разобрался, добавив пустой dict по умолчанию:

{{ range $k, $v := (merge $project.labels ($app.labels | default dict)) }}

...