站長(zhǎng)資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        Go語言怎么判斷結(jié)構(gòu)體是否存在某方法??jī)煞N方式介紹

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

        Go語言怎么判斷結(jié)構(gòu)體是否存在某方法??jī)煞N方式介紹

        go 有時(shí)需要判斷某個(gè)結(jié)構(gòu)體是不是有某個(gè)方法,但是可能突然就一臉茫然,go 也可以像 php 那樣判斷

        是的,雖然 go 沒有提供現(xiàn)成的方法,但是可以用已有的邏輯來封裝實(shí)現(xiàn)。

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

        準(zhǔn)備需要判斷的結(jié)構(gòu)體:

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

        接口斷言判斷:

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

        反射判斷:

        import(   "reflect" ) // 判斷結(jié)構(gòu)體方法是否存在 func MethodExists(in any, method string) bool {     if method == "" {         return false     }     p := reflect.TypeOf(in)     if p.Kind() == reflect.Pointer {         p = p.Elem()     }     // 不是結(jié)構(gòu)體時(shí)     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")
        登錄后復(fù)制

        【推薦學(xué)習(xí):go視頻教程】

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 久久久久久国产精品无码超碰| 香蕉久久夜色精品国产小说| 精品三级在线观看| 日韩三级精品| 99RE8这里有精品热视频| 精品国偷自产在线| 亚洲无码日韩精品第一页| 国产精品免费AV片在线观看| 成人区人妻精品一区二区不卡网站 | 日韩精品成人a在线观看| 四虎最新永久在线精品免费| 国产成人精品午夜福利| 亚洲高清国产拍精品26U| 人妻精品久久久久中文字幕| 日韩精品人妻系列无码专区免费| 国产精品主播一区二区| 日韩精品成人一区二区三区| 91在线视频精品| 国产成人精品2021| 激情亚洲一区国产精品| 人妻熟妇乱又伦精品视频| 亚洲AV蜜桃永久无码精品| 毛片a精品**国产| 精品人妻少妇一区二区| 精品精品国产国产| 国产精品综合专区中文字幕免费播放| 亚洲国产成人久久精品动漫 | 国产成人精品一区在线 | 国产精品久久久久9999高清| 国产精品污WWW在线观看| 久久久久久国产精品无码超碰| 少妇人妻无码精品视频app| 亚洲处破女AV日韩精品| 无码日韩人妻精品久久蜜桃 | 国产91精品在线| 国产精品久久久久影院色| 99re国产精品视频首页| 九九在线精品视频专区| 精品亚洲综合久久中文字幕| 在线欧美v日韩v国产精品v| 国产午夜精品无码|