使用 Go 模板中的变量键访问映射值

如何使用变量键查找映射的值而不进行迭代?

因此,我们可以使用 $x.key1在变量 map $x 上查找常量键,但是可以使用 amap.$key吗?

77601 次浏览

You use the index function:

\{\{index .Amap "key1"}}
index
Returns the result of indexing its first argument by the
following arguments. Thus "index x 1 2 3" is, in Go syntax,
x[1][2][3]. Each indexed item must be a map, slice, or array.

https://golang.org/pkg/text/template#hdr-Functions

A simpler way would be to do: \{\{.Amap.key1}}. However, this will only work if the key is alphanumeric. If not, you'll need to access it using index.

From the documentation:

- The name of a key of the data, which must be a map, preceded
by a period, such as
.Key
The result is the map element value indexed by the key.
Key invocations may be chained and combined with fields to any
depth:
.Field1.Key1.Field2.Key2
Although the key must be an alphanumeric identifier, unlike with
field names they do not need to start with an upper case letter.
Keys can also be evaluated on variables, including chaining:
$x.key1.key2