通过运行 bee new quickstart 来创建新的项目,其结构如下:
quickstart |-- conf | `-- app.conf |-- controllers | `-- default.go |-- main.go |-- models |-- routers | `-- router.go |-- static | |-- css | |-- img | `-- js |-- tests | `-- default_test.go `-- views `-- index.tpl
然后通过bee run来运行项目。
在main函数里,我们看到:
import ( _ "mynewbeego/routers" "github.com/astaxie/beego" )
有2个import,而我们知道,go的执行顺序是:
我们先去看看,router这个,是做了啥
routers目录下,只有一个router.go文件,里面只有一个init函数(这个会被执行)
func init() { beego.Router("/", &controllers.MainController{}) }
但是,我们看其的import:
import ( "mynewbeego/controllers" "github.com/astaxie/beego" )
一层层,继续去看:controllers:
其下面只有一个default.go 文件:
type MainController struct { beego.Controller } func (c *MainController) Get() { c.Data["Website"] = "beego.me" c.Data["Email"] = "astaxie@gmail.com" c.TplName = "index.tpl" }
这里是匿名组合,也即是传统的继承。