我有一些地图。 (点符号)我想打印每个键。 我知道我们可以使用一些:
{{ range $key, $value := . }}{{ $key }}{{end}}
但是我不能使用var,因为我使用Docker Compose文件,这个问题带有符号$。
如何在不使用变量的情况下打印所有密钥?
答案 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源文件中。