假设我们定义了一个NestPreparer接口,并且定义了一个baseController结构体,那么如何判断结构体baseController是否实现了NestPreparer接口的方法呢? 话不多说先上代码:
type NestPreparer interface {
NestPrepare()
}
// baseRouter implemented global settings for all other routers.
type baseController struct {
beego.Controller
i18n.Locale
user models.User
isLogin bool
}
1.用传说中的接口查询或类型断言去检测,代码如下:
// Prepare implemented Prepare method for baseRouter.
func (this *baseController) Prepare() {
if app, ok := this.AppController.(NestPreparer); ok {
app.NestPrepare()
}
}
2.用var定义变量检测,如果编译通过,则实现了接口的方法,如果编译通不过则未实现接口方法
var _ NestPreparer = &baseController{}