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

模板不会将接口类型的字段评估为基础类型

模板不会将接口类型的字段评估为基础类型

Go
慕码人2483693 2021-07-02 07:39:25
使用 golang html/template(与 相同的行为text/template)。如果我有一个带有接口类型成员的结构,我将无法访问底层类型的成员(特别是尝试访问实现接口InnerInterface但通过InnerInterface接口类型而不是结构类型返回的结构上的字段) .http://play.golang.org/p/ZH8wSK83oMpackage mainimport "fmt"import "os"import "html/template"type InnerInterface interface{ InnerSomeMethod() }type MyInnerStruct struct { Title string }func (mis MyInnerStruct)InnerSomeMethod() { fmt.Println("Just to show we're satisfying the interface") }type MyOuterStruct struct { Inner InnerInterface }func main() {    fmt.Println("Starting")    arg := MyOuterStruct{Inner:MyInnerStruct{Title:"test1"}}    err := template.Must(template.New("testtmpl").Parse("{{.Inner.Title}}")).Execute(os.Stdout, arg)    if err != nil { panic(err) }}更改:type MyOuterStruct struct { Inner InnerInterface }到一个完全通用的界面,即使type MyOuterStruct struct { Inner interface{} }其正确呈现。这让我相信interface{}渲染引擎会特别对待它。有没有比interface{}在我希望能够动态评估这样的字段时使用更好的方法?
查看完整描述

1 回答

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

添加回答

举报

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