在没有使用变量的情况下从Golang模板中获取地图中的所有密钥

时间:2017-10-10 20:12:43

标签: templates go

我有一些地图。 (点符号)我想打印每个键。 我知道我们可以使用一些:

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

但是我不能使用var,因为我使用Docker Compose文件,这个问题带有符号$。

如何在不使用变量的情况下打印所有密钥?

1 个答案:

答案 0 :(得分:1)

提取密钥并对它们进行排序,然后将它们提供给视图,因为迭代地图无论如何都有不确定的顺序(你不想要)。

import "sort"

var m map[int]string
var keys []int
for k := range m {
    keys = append(keys, k)
}
sort.Ints(keys)

在范围循环中,使用。引用范围内的项目。为该循环创建新的上下文。

{{ range . }}
  {{ . }}
{{ end }}

但是我建议你使用符号$来解决问题,你会想要使用它。这听起来像是错误地使用了Docker Compose文件 - 如果你想要一个二进制部署,你可以将golang模板放入单独的文件中,或者放入go源文件中。