假設我們定義了一個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{}