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