Go语言如何判断结构体是否存在某方法


这篇文章主要介绍了Go语言如何判断结构体是否存在某方法的免费云主机域名相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇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")

关于“Go语言如何判断结构体是否存在某方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Go语言如何判断结构体是否存在某方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注百云主机行业资讯频道。

相关推荐: jquery-validate怎么用

这篇文章主要介绍“jquery-validate怎么用”,在日常操作中,相信很多人在jquery-validate怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery-validate怎么用”的疑惑有所帮助!接下来,…

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

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/10 19:30
Next 05/10 19:30

相关推荐