Функция Голанга «не может оценить поле в строке типа» - PullRequest
0 голосов
/ 13 января 2019

У меня есть структура типа 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 в строке типа.

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

1 Ответ

0 голосов
/ 13 января 2019

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

{{range $item := .Items}}
  <tr>
    <td>
      {{range .ItemFields}}
        {{if $item.IsHyperlink .}}
          <a href="{{.}}">{{.}}</a>
        {{else}}
          {{.}}
        {{end}}
      {{end}}
    </td>
  </tr>
{{end}}
...