Golang怎么判断结构体是否存在某方法


这篇“Golang怎么判断结构体是否存在某方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang怎么判断结构体是否存在某方法”文章吧。go 判断结构体是否有某个方法go 有时需要判断某个结构体是不是有某个方法,但是可能突然就一脸茫然,go 也可以像 php 那样判断是的,虽然 go 没有提供现成的方法,但是可以用已有的逻辑来封装实现。目前能用的方式有两种,一种是知道完整的方法可以用接口断言方式判断,第二种就是用反射来完成判断。准备需要判断的结构体:

typeRefDatastruct{}

func(this*RefData)Show(dataany,namestring)string{
data2:=data.(string)+"==="+name

returndata2
}

接口断言判断:

refDataExists:=false
varrefDataObany=&RefData{}
if_,ok:=refDataOb.(interface{
Show(any,string)string
});ok{
refDataExists=true
}

反射判断:

import(
"reflect"
)
//判断结构体方法是否存在
funcMethodExists(inany,methodstring)bool{
ifmethod==""{
returnfalse
}
p:=reflect.TypeOf(in)
ifp.Kind()==reflect.Pointer免费云主机域名{
p=p.Elem()
}
//不是结构体时
ifp.Kind()!=reflect.Struct{
returnfalse
}
object:=reflect.ValueOf(in)
//获取到方法
newMethod:=object.MethodByName(method)
if!newMethod.IsValid(){
returnfalse
}
returntrue
}
//使用
refDataExists:=MethodExists(&RefData{},"Show")

接口断言判断:
反射判断:
以上就是关于“Golang怎么判断结构体是否存在某方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注百云主机行业资讯频道。

相关推荐: Vue.js怎么实现文件上传压缩优化

本篇内容介绍了“Vue.js怎么实现文件上传压缩优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!两种方法 :第1种是借助canvas的封装的文件压缩上传第2种…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/24 11:25
下一篇 02/24 11:35

相关推荐