我正在尝试打印地图的值,该地图的键上有一个点(.)。
.
示例图:
type TemplateData struct { Data map[string] int } tpldata := TemplateData{map[string]int {"core.value": 1}}
我试过了:
{{ $key := "core.value" }} {{ .Data.key }}
但得到:
2014/06/17 16:46:17 http: panic serving [::1]:41395: template: template.html:13: bad character U+0024 '$'
和
{{ .Data."core.value" }}
2014/06/17 16:45:07 http: panic serving [::1]:41393: template: template.html:12: bad character U+0022 '"'
请注意,我能够成功打印没有点的键的值。
正如@ martin-ghallager所说,需要使用外部函数来访问这些元素。
有用的是,标准库已经提供了index函数(它的dotNotation功能完全与Martin的功能相同)。
dotNotation
要使用它,只需编写:
{{ index .Data "core.value" }}
index万一密钥不存在,该函数将返回默认值。如果您的词典具有同质数据,则此方法有效,但是当其异构时,它将返回错误的值。在这种情况下,您可以使用以下命令显式设置默认值:
index
{{ 0 | or (index .Data "core.value") }}