Функция голанга 'не может оценивать поле в строке типа'

У меня есть структура типа Item, содержащая ItemFields, которая представляет собой фрагмент строки типа. Я хотел бы условно напечатать каждую строку в ItemFields, которая представляет собой гиперссылку с тегом привязки. Для этого я использую функцию IsHyperlink, чтобы проверить, должна ли каждая строка в срезе быть заключена в тег привязки или просто распечатана.

type Item struct {
  ItemFields []string
}

Я перебираю ItemFields в своем page.html вот так.

{{range .Items}}
  <ul>
    <li>
      {{range .ItemFields}}
        {{if .IsHyperlink .}}
          <a href="{{.}}">{{.}}</a>
        {{else}}
          {{.}}
        {{end}}
      {{end}}
    </li>
  </ul>
{{end}}

Однако, когда я запускаю приложение, IsHyperlink сообщает, что не может оценить поле IsHyperlink в строке типа.

Как я могу изменить свой код go, чтобы успешно заключать гиперссылки в теги привязки?


person JetThomas    schedule 12.01.2019    source источник


Ответы (1)


Значение . в этом контексте является строкой, а не Item. Используйте переменную для ссылки на элемент:

{{range $item := .Items}}
  <tr>
    <td>
      {{range .ItemFields}}
        {{if $item.IsHyperlink .}}
          <a href="{{.}}">{{.}}</a>
        {{else}}
          {{.}}
        {{end}}
      {{end}}
    </td>
  </tr>
{{end}}
person Cerise Limón    schedule 12.01.2019