我们在写web程序的时候应该会经常遇到这样的情况,一些共有字段,比如用户名,每个渲染函数中都要传这些共有的参数,如何去掉这些重复的工作呢?使用继承即可,下面是代码示例:
代码示例:
package test import "github.com/astaxie/beego" // 这里是base结构体 type Base struct { beego.Controller } // 共有字段获取并且渲染的方法 func (b *Base)BaseRender() { username := b.GetSession("username") b.Data["username"] = username } type Test struct { Base // 匿名字段,就是继承的意思,这样就会拥有base的所有方法 } func (t *Test) List() { // 只需要在需要渲染共有字段的函数中调用下 // 这样就会直接渲染一些共有的字段, // 比如前面session中获取的username,不需要每个函数中都写一次 t.BaseRender() // 相当于执行了t.Data["username] = t.GetSession("username") t.TplName = "test.html" }