【问题标题】:How to get key from map如何从地图中获取密钥
【发布时间】:2018-12-21 15:13:42
【问题描述】:

我正在开发 Go 模板。在. 有一些地图我知道如何获取值,只要我知道密钥。

"Map value: {{ printf "%s" .key1 }}"

如何从模板中获取键名?我希望可能是这样的

"Map key: {{ printf "%s" (keys .)[0] }}"

【问题讨论】:

  • 您可以通过地图range 获取所有键和值,这就是您要找的吗?没有有意义的方法来获取可以通过数字索引访问的键切片,因为切片是有序的,而映射不是。
  • @Adrian 是的,听起来像我需要的。
  • range 包含在 Actions 下的文档中:golang.org/pkg/text/template/#hdr-Actions
  • @Adrian 谢谢,我可以看到它并且确实有效。只是不想在实际给出答案的时候给出答案。

标签: go go-templates consul-template


【解决方案1】:

正如@Adrian 评论的那样:

{{ range $key, $val := . }}
key: {{ $key }}; value: {{ $val }}
{{ end }}

但仅从range documentation 很难弄清楚

【讨论】:

    【解决方案2】:

    由于问题被标记为consul-template...Consul/Vault 模板的语法是(假设.Data 是地图):

    {{ index .Data "complex.key.name" }}
    

    当键名很复杂(比如包含点)并且{{ .Data.complex.key.name }} 被解释为访问嵌套字段时,这很有用。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多