使用范围从模板构建时Go无法评估字段

我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在模板中正确显示文件名和大小。


慕的地6264312
浏览 143回答 1
1回答

回首忆惘然

管道的初始值(点)是您传递给的值Template.Execute(),在您的情况下是Filestype []File。因此,在您的模板执行期间,点 .是[]File. 该切片没有命名的字段或方法Files,这.Files将在您的模板中引用。您应该做的只是使用.which 指代您的切片: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}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go