Go template – syntax for range

huangapple go评论83阅读模式
英文:

Go template - syntax for range

问题

在Go模板中,我有一个设置如下的映射:

{{$key}}map := make(map[string]interface{})

我想使用以下方式遍历映射:

{{ range $mapKey, $mapValue := {{$key}}map}}

但是我得到了以下错误:

在range中出现意外的"{"

看起来它不允许在另一个{{}}内嵌套{{}}。有没有办法解决这个问题?

英文:

In Go template, I have a map setup like this:

{{$key}}map := make(map[string]interface{})

And I want to iterate through the map using this:

{{ range $mapKey, $mapValue := {{$key}}map}}

And I am getting this error:

unexpected "{" in range

Looks like it does not allow nested {{}} inside another {{}}. Is there anyway I can solve this issue ???

答案1

得分: 3

你不能使用模板引擎本身来生成模板中要使用的变量名。你似乎需要有多个映射,每个 $key 对应一个映射。所以,可以使用一个映射的映射:

m := make(map[string]map[string]interface{})

其中 m[key] 给出了对应键的映射。

然后你可以这样做:

{{ range $mapKey, $mapValue := (index $.m $.key)}}
...
{{end}}
英文:

You cannot generate variable names to be used in templates using the template engine itself. You seem to be in need of having multiple maps, one for each $key. So, use a map of maps:

m := make(map[string]map[string]interface{})

where m[key] gives the map for the key.

Then you can do:

{{ range $mapKey, $mapValue := (index $.m $.key)}}
...
{{end}}

huangapple
  • 本文由 发表于 2021年7月6日 12:12:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/68264441.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定