久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(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)