我们在写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"

}