为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
沧海一幻觉 2023-07-04 09:59:59
$ hugo versionHugo 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 '['感谢您的任何提示。
查看完整描述

2 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您收到的错误是因为该[字符是意外的。


事实上,这种语法在模板内不起作用:


$json.nestedMap["action"]

您必须使用index这样的函数来访问地图元素:


index $json.nestedMap "action"

但是,据我所知,该语法不允许您实际设置密钥,而只能访问它。


修改模板内的映射的一种方法是在包装器结构中定义某些方法,然后从模板中调用该方法。


例如:


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


查看完整回答
反对 回复 2023-07-04
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

没有内置的方法可以做到这一点,你需要使用一个函数来做到这一点。

查看完整回答
反对 回复 2023-07-04
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信