一尘不染

如何打印包含点的键的值

go

我正在尝试打印地图的值,该地图的键上有一个点(.)。

示例图:

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 '"'

请注意,我能够成功打印没有点的键的值。


阅读 189

收藏
2020-07-02

共1个答案

一尘不染

正如@ martin-ghallager所说,需要使用外部函数来访问这些元素。

有用的是,标准库已经提供了index函数(它的dotNotation功能完全与Martin的功能相同)。

要使用它,只需编写:

{{ index .Data "core.value" }}

index万一密钥不存在,该函数将返回默认值。如果您的词典具有同质数据,则此方法有效,但是当其异构时,它将返回错误的值。在这种情况下,您可以使用以下命令显式设置默认值:

{{ 0 | or (index .Data "core.value") }}
2020-07-02