我的问题: 我有一个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