因此在main.go
中,我有一个结构和方法,可以从main.go
内部调用而没有问题。想象一下它是这样的:
type Test struct {
val1 float32
val2 float32
}
func (t Test) callMethod() float32 {
return t.val1 / t.val2
}
我这样称呼模板,并作为数据给出
Test
结构的数组,如下所示:var testvar1 Test
var testvar2 Test
var teststructs [] Test
teststructs = append(teststructs, testvar1)
teststructs = append(teststructs, testvar2)
tpl.ExecuteTemplate(w, "testpage.gohtml", teststructs)
在模板内部,我试图像这样调用
callMethod
{{range .}}
{{ .callMethod }}
{{end}}
但是我收到以下错误:
在处执行“testpage.gohtml”:无法评估main.Test类型的字段callMethod
有谁知道我在做什么错,并对此有解决方案?我已经尝试修复了好几个小时,而现在我很沮丧。
最佳答案
您的Test
结构没有导出的字段/方法,即模板中使用的结构中的字段/方法必须以大写字母开头。
将方法名称更新为CallMethod
func (t Test) CallMethod() float32 {
return t.val1 / t.val2
}
和模板:
const tmpl = `
{{range .}}
{{.CallMethod}}
{{end}}
`
见代码https://play.golang.org/p/Vud7ipJ_Vyr