Поддерживать неупорядоченную итерацию по карте в шаблонах Go

Моя проблема: у меня есть тип map[string], который я хочу перебрать в шаблоне, поддерживающем случайный порядок упорядочения более широкого языка.

Библиотека шаблонов Go сообщает здесь https://golang.org/pkg/text/template/, что:

Если значение является картой, а ключи имеют базовый тип с определенным порядком ("сопоставимый"), элементы будут посещаться в отсортированном порядке ключей.

Я знаю, что могу обойти это, объявив отдельную строку [] ключей в исходной карте, а затем выполнить итерацию по этому, то есть:

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

0 ответов

Другие вопросы по тегам