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

        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號
        主站蜘蛛池模板: 精品国产美女福利到在线不卡| 久久国产精品久久| 国产精品久久久久AV福利动漫| 99精品在线免费| 69久久精品无码一区二区| 亚洲国产高清精品线久久 | 精品福利一区二区三区免费视频| 精品国产人成亚洲区| 久久99精品久久久久久| 精品福利视频一区二区三区 | 精品一区二区三区免费观看 | 97国产精品视频| 久久亚洲私人国产精品vA| 欧美激情精品久久久久久久| 99久久婷婷国产综合精品草原| 国产精品久久久久9999| 国语自产精品视频在线区| 亚洲精品二区国产综合野狼 | 日韩精品无码一本二本三本| 人人妻人人澡人人爽精品欧美 | 国产精品毛片a∨一区二区三区| 国产2021精品视频免费播放| 老汉精品免费AV在线播放| 中文无码久久精品| 亚洲爆乳无码精品AAA片蜜桃| 久久久久久久亚洲精品| 久久99热这里只有精品国产| 国产精品福利电影一区二区三区四区欧美白嫩精品 | 九九精品99久久久香蕉| 亚洲国产精品特色大片观看完整版 | 成人国产精品日本在线观看| 久久精品九九亚洲精品天堂| 国产成人精品综合网站| 国产精品高清一区二区三区 | 久久99精品国产麻豆| 国产精品美女久久久m| 国产精品视频白浆免费视频| 国产精品高清一区二区三区| 99久久这里只有精品| 国产精品麻豆高清在线观看 | 久久久久久亚洲精品成人|