转到模板:在模板

时间:2016-03-04 04:05:19

标签: templates go

出于某种原因,我的模板无效,我无法说明原因。的价值 。是一个map [string] UpFile,其中UpFile是一个结构,其方法Path()不带参数。以下是模板的相关部分:

{{ range $key, $value := . }}
<a href="{{ $value.Path }}">{{ $key }}</a>
{{ end }}

模板在没有对变量$ value调用Path()的情况下工作。我还测试了对Path的调用值。是UpFile,它的工作原理。关于模板的go doc说调用变量上的方法很好。模板编译并被服务,但输出范围内没有任何内容。当我省略对Path()的调用时,我得到一串字符。谢谢你看看。

编辑:使用UpFile中的字段而不是Path方法提供预期输出。仍然不明白为什么致电Path并不起作用。

2 个答案:

答案 0 :(得分:2)

如果指针接收器上有Path方法

func (f *UpFile) Path() string { return f.path }

然后将地图值更改为指针

var m map[string]*UpFile

由于地图值无法寻址,因此无法在*UpFile地图值上调用UpFile方法。

另一个选择是更改Path方法以使用非指针接收器类型UpFile

答案 1 :(得分:-2)

省略括号,它应该没问题。例如:

{{ range $key, $value := . }}
  <a href="{{ .Path }}">{{ $key }}</a>
{{ end }}