站長資訊網
最全最豐富的資訊網站

Go語言怎么判斷結構體是否存在某方法?兩種方式介紹

Go語言怎么判斷結構體是否存在某方法?下面本篇文章給大家介紹一下Golang判斷結構體是否存在某方法的兩種方式(附代碼示例),希望對大家有所幫助!

Go語言怎么判斷結構體是否存在某方法?兩種方式介紹

go 有時需要判斷某個結構體是不是有某個方法,但是可能突然就一臉茫然,go 也可以像 php 那樣判斷

是的,雖然 go 沒有提供現成的方法,但是可以用已有的邏輯來封裝實現。

目前能用的方式有兩種,一種是知道完整的方法可以用接口斷言方式判斷,第二種就是用反射來完成判斷。

準備需要判斷的結構體:

type  RefData  struct  {}  func  (this  *RefData)  Show(data  any,  name  string)  string  {   data2  :=  data.(string)  +  "==="  +  name    return  data2 }
登錄后復制

接口斷言判斷:

refDataExists := false var refDataOb any = &RefData{} if _, ok := refDataOb.(interface {     Show(any, string) string }); ok {     refDataExists = true }
登錄后復制

反射判斷:

import(   "reflect" ) // 判斷結構體方法是否存在 func MethodExists(in any, method string) bool {     if method == "" {         return false     }     p := reflect.TypeOf(in)     if p.Kind() == reflect.Pointer {         p = p.Elem()     }     // 不是結構體時     if p.Kind() != reflect.Struct {         return false     }     object := reflect.ValueOf(in)     // 獲取到方法     newMethod := object.MethodByName(method)     if !newMethod.IsValid() {         return false     }     return true } // 使用 refDataExists := MethodExists(&RefData{},  "Show")
登錄后復制

【推薦學習:go視頻教程】

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
精品人体无码一区二区三区| 国产精品第一区揄拍无码| 久久人人爽人人精品视频| 日韩视频免费一区二区三区| 国产在线精品一区二区| 99er热精品视频| 国产成人精品日本亚洲专区6| 无码日韩精品一区二区免费暖暖 | 国内久久精品视频| 久久亚洲精品无码网站| 国产精品嫩草影院一二三区入口| 99久久99久久久精品久久| 久久精品午夜福利| 国产乱码精品一品二品| 亚洲日韩精品一区二区三区| 久久中文精品无码中文字幕| 精品久久久久久无码国产| CAOPORM国产精品视频免费| 免费精品久久久久久中文字幕 | 久久精品亚洲一区二区| 国语自产拍精品香蕉在线播放| 欧洲熟妇精品视频| 99热精品在线观看| 99re8这里有精品热视频免费| 9i9精品国产免费久久| 91麻豆精品国产| 97精品国产91久久久久久| 中文字幕九七精品乱码| 亚洲伊人久久精品影院| 国内精品久久久久久99| 国产中老年妇女精品| 久久96国产精品久久久| 久久精品国产精品青草| 久章草在线精品视频免费观看| 久久亚洲精品国产精品黑人| 久久精品亚洲一区二区| 久久777国产线看观看精品卜| 久久婷婷国产综合精品| 亚洲国产成人精品久久| 999国内精品永久免费观看| 亚洲精品无码专区久久|