I have Files
slice of File
structure in my Go program to keep name and size of files. I created template, see below:
type File struct {
FileName string
FileSize int64
}
var Files []File
const tmpl = `
{{range .Files}}
file {{.}}
{{end}}
`
t := template.Must(template.New("html").Parse(tmplhtml))
err = t.Execute(os.Stdout, Files)
if err != nil { panic(err) }
Of course I got panic saying:
can't evaluate field Files in type []main.File
Not sure how to correctly display file names and sizes using range
in template.
The initial value of your pipeline (the dot) is the value you pass to
Template.Execute()
which in your case isFiles
which is of type[]File
.So during your template execution the dot
.
is[]File
. This slice has no field or method namedFiles
which is what.Files
would refer to in your template.What you should do is simply use
.
which refers to your slice:And that's all. Testing it:
Output (try it on the Go Playground):