Моя проблема: у меня есть тип map [string], который я хочу перебрать в шаблоне, поддерживающем случайное поведение упорядочения более широкого языка.
Здесь библиотека шаблонов Go заявляет https://golang.org/pkg/text/template/#hdr-Actions that:
Если значение является картой, а ключи имеют базовый тип с определенным порядком («сопоставимым»), элементы будут посещаться в отсортированном порядке ключей.
Я знаю, что могу обойти это, объявив отдельную строку [] ключей на исходной карте, а затем повторить это, то есть:
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