Go Lang是无继承层次的轻量级面向对象编程范式。Go Lang中的接口与实现之间完全是非侵入式的。这种接口实现方式很值得称赞。不但如此,在Go Lang中只有类型嵌入而没有类型继承。这规避了很多与继承有关的复杂问题,也使类型层次更加简单化了。
在Go Lang里面,只存在嵌入而不存在继承的概念。Go Lang并不提供典型的类型驱动的子类化方法,但是靠这种嵌入的方式实现了同样的效果。
下面上代码:
基础类base.go
package controllers
//基础类,我准备把所有的权限判断放到这个类里面
import (
"github.com/astaxie/beego"
)
type BaseController struct {
beego.Controller
ControllerName string
ActionName string
TplNames string
}
//直接在页面输出字符串
func (this *BaseController) Html(str string) {
this.Ctx.WriteString(str) //self.GetControllerAndAction()
}
继承类,index.go
package controllers
type IndexController struct {
BaseController
}
func (this *IndexController) Get() {
this.Html("aaaaaaa")
}
后记:有人管beego的这种嵌入方式叫做匿名组合,我没有查到相关的资料,谁要是有的话,麻烦告诉我。