为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕的地6264312 2022-01-10 14:38:45
我Files的片File结构,我的围棋程序,以保持名称和文件的大小。我创建了模板,见下文:type File struct {    FileName string    FileSize int64}var Files []Fileconst 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在模板中正确显示文件名和大小。
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

管道的初始值(点)是您传递给的值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}


查看完整回答
反对 回复 2022-01-10
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信