在 golang 模板中向地图添加新的键值

$ hugo version

Hugo Static Site Generator v0.54.0 darwin/amd64 BuildDate: unknown

$ cat layouts/t/code.html

  ...

  {{- $json := getJSON $path -}}

  {{- if eq $action "edit" -}}

    {{- $json.nestedMap["action"] = "update" -}}

  {{- end -}}

  ...

  <script type="module">

    import App from "/code.js";

    new App({{ $json.nestedMap | jsonify }});

  </script>

$json.nestedMap 是map[string]interface {}


但出现错误解析失败错误字符 U+005B '['


感谢您的任何提示。


沧海一幻觉
浏览 84回答 2
2回答

慕盖茨4494581

您收到的错误是因为该[字符是意外的。事实上,这种语法在模板内不起作用:$json.nestedMap["action"]您必须使用index这样的函数来访问地图元素:index $json.nestedMap "action"但是,据我所知,该语法不允许您实际设置密钥,而只能访问它。修改模板内的映射的一种方法是在包装器结构中定义某些方法,然后从模板中调用该方法。例如:type mapWrapper struct {&nbsp; &nbsp; TheMap map[string]interface{}}func (m *mapWrapper) SetMapValue(key, value string) string {&nbsp; &nbsp; m.TheMap[key] = value&nbsp; &nbsp; return ""}然后在模板中:{{- .SetMapValue "key2" "value2" }}操场上的完整工作示例:https://play.golang.org/p/8bT4jjYwuzg

犯罪嫌疑人X

没有内置的方法可以做到这一点,你需要使用一个函数来做到这一点。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go