Используя text/template
, мне нужно выяснить, имеет ли какой-либо объект в массиве определенное значение свойства.Проверьте, существует ли значение в вложенном массиве с пакетом шаблонов
Скажем, у меня есть список людей (JSON):
[
{"name": "ANisus", "sex":"M"},
{"name": "Sofia", "sex":"F"},
{"name": "Anna", "sex":"F"}
]
Используя шаблон, я хочу, чтобы этот вывод:
Females:
Sofia
Anna
Но заголовок, Females:
, должен только показать в случае, если на самом деле есть любое лицо с sex
, установленное на F
. Как я могу выполнить это в системе шаблонов? Моя первая попытка была с помощью переменного:
{{$hasFemale := 0}}
{{range .}}{{if eq .sex "F"}}{{$hasFemale := 1}}{{end}}{{end}}
{{if $hasFemale}}Female:{{end}}
я не получил эту работу, потому что $ hasFemale в пределах диапазона в другой области, а не такие же, как один инициированы с 0. Я могу» t, похоже, найдет способ изменить переменную после ее запуска.
«Работа» Пример: http://play.golang.org/p/T-Ekx7n9YQ
И я не могу переместить эту логику к приложению; это должно быть сделано в шаблоне.
Этот вид логики в шаблонах, вероятно, станет намного легче, когда Go 1.2 капли. (Http://golang.org/doc/go1.2#text_template). Может быть, попробуй чаевые? Я думаю, что у него уже есть операторы сравнения шаблонов, которые прекрасно работают, но не уверены. – Intermernet
О, это может быть способ. Но моя компания (у меня есть мой босс, чтобы принять меня с помощью Go: D), возможно, возникли проблемы со мной, используя подсказку. Я также добавил рабочий пример к вопросу о том, с кем люди будут играть. – ANisus
Go 1.2 должен быть выпущен в декабре, поэтому теперь стоит начать экспериментировать с ним, так что к тому моменту, когда он будет выпущен как стабильная версия, вы уже воспользуетесь новыми функциями. Блокировка функций была в сентябре, поэтому теперь это должен быть довольно стабильный API. – Intermernet