在Go模板中维护地图的无序迭代

时间:2018-10-23 14:26:41

标签: go templating-engine

我的问题: 我有一个map [string] Type,我想在一个模板中进行迭代,以保持更广泛语言的随机排序行为。

Go模板库在https://golang.org/pkg/text/template/#hdr-Actions中指出:

  

如果值为地图,则     键是具有定义顺序(“可比较”)的基本类型,     元素将按排序的键顺序进行访问。

我知道我可以通过在初始映射中声明键的单独[]字符串,然后对其进行迭代来解决此问题,即:

data := map[string]DummyStruct{}
data["Windward"] = DummyStruct{"Windward", 15}
data["Phlebas"] = DummyStruct{"Phlebas", 3}
data["Art"] = DummyStruct{"Art", 3}
i := 0
indices := make([]string, len(data))
for name, value := range data {
        fmt.Printf("%v, %v\n", name, value)
    indices[i] = name
    i ++
}

但是我希望这是模板库的一种完全本机的,受支持的功能,以匹配更广泛语言中的行为,但是似乎一点也不被支持。

有关完整示例,请参见此处的游乐场:https://play.golang.org/p/1oTI56G5pr9

0 个答案:

没有答案