我Files的片File结构,我的围棋程序,以保持名称和文件的大小。我创建了模板,如下所示:
Files
File
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) }
我当然会慌张地说:
无法评估[] main.File类型的字段文件
不确定如何range在模板中正确显示文件名和大小。
range
管道的初始值( 点 )是传递给您的值Template.Execute(),在这种情况下,Files该值是type []File。
Template.Execute()
[]File
因此,在模板执行期间, 点 .是[]File。该切片没有命名Files为.Files模板中将引用的字段或方法的字段。
.
.Files
您应该做的就是简单地使用.它,它指向您的切片:
const tmpl = ` {{range .}} file {{.}} {{end}} `
就这样。测试它:
var Files []File = []File{ File{"data.txt", 123}, File{"prog.txt", 5678}, } t := template.Must(template.New("html").Parse(tmpl)) err := t.Execute(os.Stdout, Files)
输出(在Go Playground上尝试):
file {data.txt 123} file {prog.txt 5678}