Поддерживать неупорядоченную итерацию по карте в шаблонах Go - PullRequest
0 голосов
/ 23 октября 2018

Моя проблема: у меня есть тип 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

...