Golang函数“无法评估字符串类型的字段”

时间:2019-01-12 22:53:24

标签: go go-templates

我有一个Item类型的结构,其中包含ItemFields,它是string类型的切片。我想有条件地打印ItemFields中的每个字符串,该字符串是带有锚标记的超链接。为此,我使用函数IsHyperlink来检查切片中的每个字符串是否应该包裹在锚定标记中或简单地打印出来。

type Item struct {
  ItemFields []string
}

我正在这样遍历page.html中的ItemFields。

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

但是,当我运行应用程序时,IsHyperlink报告它无法评估字符串类型的字段IsHyperlink。

如何更改我的go代码,以将超链接成功包装在定位标记中?

1 个答案:

答案 0 :(得分:4)

该上下文中的值.是一个字符串,而不是Item。使用变量来引用该项目:

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