Моя проблема: у меня есть тип карты [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 ++
}
однако я надеялся, что это будет полностью нативная поддерживаемая функция библиотеки шаблонов, чтобы соответствовать поведению на более широком языке, однако, похоже, она вообще не поддерживается.
См. Playground здесь для полного примера: https://play.golang.org/p/1oTI56G5pr9 а>