出于某种原因,我的模板无效,我无法说明原因。的价值 。是一个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并不起作用。
答案 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 }}