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

界面中存在不相关的方法会破坏文本/模板吗?

界面中存在不相关的方法会破坏文本/模板吗?

Go
慕莱坞森 2021-07-03 08:20:20
游乐场链接:http : //play.golang.org/p/Ebf5AuJlcPtype Foo interface {}type Bar interface {    ThisIsABar()}// Person implements both Foo and Bartype Person struct {    Name string}func (p Person) ThisIsABar() {}type FooContext struct {    Something   Foo}type BarContext struct {    Something   Bar}func main() {    t := template.Must(template.New("test").Parse("{{ .Something.Name }}\n"))    // This works fine.    if err := t.Execute(os.Stdout, FooContext{Person{"Timmy"}}); err != nil {        fmt.Printf("Error: %s\n", err)    }    // With BarContext, containing the exact same Person but wrapped in a    // different interface, it errors out.    if err := t.Execute(os.Stdout, BarContext{Person{"Timmy"}}); err != nil {        fmt.Printf("Error: %s\n", err)    }}当我渲染一个text/template包含的模板(通过包)时{{ .Something.Name }},我可以通过Foo不包含任何方法的接口,并且它工作正常。但是,如果我Bar改为通过界面,我会得到:executing "test" at <.Something.Name>: can't evaluate field Name in type main.Bar为什么接口上存在一个甚至没有使用的不相关方法会影响模板的呈现?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 194 浏览
慕课专栏
更多

添加回答

举报

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