Распакуйте строку в структуру карты, используя базовый шаблон (обратный процесс анализа шаблона) - PullRequest
1 голос
/ 09 марта 2019

Мне любопытно посмотреть, есть ли способ упорядочить карту или структуру из строки и шаблона Go (обратное значение template.Execute)

Например, допустим, у нас есть следующеешаблон для шаблона имени файла

const NameTemplate = `{{ .Os.Type }}/{{ .Os.Variant }}!{{ .Os.Version }}!{{ .Name }}!{{ .Version }}`

И скажем, у нас есть следующая карта (используя структуру в моем решении, но я буду использовать карту здесь для простоты)

data := map[string]interface{}{
    "Name": "some-name",
    "Version": "1.0",
    "Os": map[string]interface{}{
        "Type": "linux",
        "Variant": "debian",
        "Version": "9.0",
    },
}

Выполнение tmpl.Execute(NameTemplate, data) приведет к linux/debian!9.0!some-name!1.0

Теперь, что если бы у нас была эта строка linux/debian!9.0!some-name!1.0 и шаблон, определенный выше NameTemplate.Есть ли простой способ получить карту (или структуру), подобную той, которая определена в data?

...