Ошибка, которую вы получаете, заключается в том, что символ [
является неожиданным.
Действительно, этот синтаксис не работает внутри шаблонов:
$json.nestedMap["action"]
Вместо этого вы должны использовать такую функцию index
, чтобы получить доступ к элементу карты:
index $json.nestedMap "action"
Но, AFAIK, этот синтаксис не позволит вам на самом деле установить ключ, просто получить к нему доступ.
Один из способов изменить карту внутри шаблона - это определить некоторый метод в структуре-обертке, а затем вызвать этот метод из шаблона.
Например:
type mapWrapper struct {
TheMap map[string]interface{}
}
func (m *mapWrapper) SetMapValue(key, value string) string {
m.TheMap[key] = value
return ""
}
Тогда в шаблоне:
{{- .SetMapValue "key2" "value2" }}
Полный рабочий пример на детской площадке:
https://play.golang.org/p/8bT4jjYwuzg