2016-03-04 72 views
2

由於某種原因,我的模板不工作,我不知道爲什麼。的價值 。是一個映射[字符串] UpFile其中UpFile是一個結構與Path()方法沒有參數。這裏是模板的相關部分:

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

該模板在變量$ value沒有調用Path()的情況下工作。我還測試了對Path的調用時的值。是UpFile,它的工作。 go doc在模板上表示調用變量上的方法很好。模板編譯並服務,但是範圍內沒有任何內容被輸出。當我省略對Path()的調用時,我得到一串字符。謝謝參觀。

編輯:使用UpFile中的字段而不是Path方法提供預期的輸出。仍然不明白爲什麼呼叫路徑不起作用。

回答

2

如果Path方法是上的指針接收器

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

然後改變地圖的值的指針

var m map[string]*UpFile 

由於地圖值不尋址的,這是不可能請在UpFile地圖值上調用*UpFile方法。

另一種選擇是將Path方法更改爲使用非指針接收器類型UpFile

+0

謝謝,我最終將方法改爲 func(f UpFile)Path()string {return f.path} 而不是更改地圖。 –

-2

只是省略了括號,它應該沒問題。例如:

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