golang檢測結構體是否實現了接口的方法

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章